calling methods from one object in another?

I realize the title probably doesn't make much sense, but that was the best short description I could come up with.

Anyway, I have users and pages in my site, and was using the following code in the users controller, which works fine:

<code>   def show     @user = User.find(params[:id])     @title = @user.Fname + " " + @user.Lname   en </code>

However, if I go to the pages controller, and use the following code, I get "Couldn't find user without an id" for an error.

<code>   def home     @title = "Home"     @user = User.find(params[:id])   end </code>

Using User.find(1) works just fine instead of User.find(params[:id])

I feel like I'm probably just restricting something to Users only somehow, but can't figure it out. Seems like it would be obvious to someone more experienced, (I hope?)

I realize the title probably doesn't make much sense, but that was the best short description I could come up with.

Anyway, I have users and pages in my site, and was using the following code in the users controller, which works fine:

<code> def show @user = User.find(params[:id]) @title = @user.Fname + " " + @user.Lname en </code>

However, if I go to the pages controller, and use the following code, I get "Couldn't find user without an id" for an error.

<code> def home @title = "Home" @user = User.find(params[:id]) end </code>

Using User.find(1) works just fine instead of User.find(params[:id])

I feel like I'm probably just restricting something to Users only somehow, but can't figure it out. Seems like it would be obvious to someone more experienced, (I hope?)

Your show action will usually be supplied with a :id parameter (since show usually means show me this particular user) via the url (eg / users/123) or query parameters. On the other hand it sounds like when you link to your home action in the pages controller you're not supplying an id parameter, and so params[:id] is nil, so User.find(params[:id]) can't work. Which user did you want to show?

Fred

I wanted to pass it the id of the logged in user. I have some things that I want to show up for some users and not for others. I wanted to use @user.admin? for this, which works fine on the users pages. however, since I can't get the @user assignment to work for pages this isn't working either :frowning:

Aha! I've figured it out.

In case anyone else is wondering, I have a current_user defined in sessions helper, so, I had to include sessionshelper, and set @user = current_user!

Phil

Aha! I’ve figured it out.

In case anyone else is wondering, I have a current_user defined in

sessions helper, so, I had to include sessionshelper, and set @user =

current_user!

Just in case it helps; if you have a current_user helper, you don’t need to assign anything to @user in a controller at all. You can just use current_user in your view. :slight_smile: