App design question: user_photo helper

why not just pass the object to your helper method as an argument?

def user_photo(user) ? : 'default.png'

then in your view template just use:

<%= user_photo(@user) %>


Thanks Mike. I've tried your suggestion but it doesn't work - definitely
due to my lack of understanding. On the posts index, I get the

You have a nil object when you didn't expect it!
The error occurred while evaluating

I replaced the previous helper with your much more streamlined version.
I also put the <%= user_photo(@user) %> in place of <%= link_to
image_tag user_photo %> in the _post partial (I'll put the link_to and
image_tag in when it's all working). But the post index action isn't
passing a @user variable (as seen in the original post, above), and the
_post partial currently works by calling 'post.user', or
'post.created_at.to_s(:short)' local variables on the @posts :collection
passed on the index view;

<h2>Latest Posts</h2>

<%= render :partial => 'post', :collection => @posts %>

<%= will_paginate @posts %>

How does the @user variable fit in to this? Wouldn't it need to be
defined in either the application helper or the Posts index action?

If you want to display a photo that is associated with a user, you
will need to have access to the user object for that photo.

Looking at your original post, it appears that a post belongs to a
user - is this correct? If so, in the posts index action for example,
you would call Mike's suggested method as user_photo(post.user). What
this is doing is passing the user object associated with that post
through to the user_photo helper.



Robin, thanks for the explanation. A user has many posts, and a post
belongs to a user. I'm still getting an error from the _post partial;

"undefined method `photo?' for #<User:0x3656eec>"


def user_photo(user) ? : 'rails.png'


<%= user_photo(post.user) %>

I don't understand why I'm getting the error, because I can link to a as follows;

<%= link_to image_tag(,
user_path(post.user) %>

And that successfully passes the 'post.user' to the user_path. Surely
I'm misunderstanding how the helper uses the post.user to fetch the