Hi Guys,
I’m having a similar problem to someone earlier on the board, but the
solutions posted aren’t working for me, so I figured I wouldn’t hijack
the thread and started a new one:
I have an application that allows users to post updates, when they go to
the homepage I want the users details and a list of their updates to
show, however I’m having trouble with the find parameters.
Currently the model states that:
user has_many: updates
update belongs_to:user
I think this is correct (and the right pluralisation)?
the controller for the index page looks like this:
def index
@user = User.find(params[:id])
@updates = Update.find(params[:id]).updates
end
as explained in a previous thread
(You have a nil object - Rails - Ruby-Forum)
I’ve also tried the different permutations of
@updates = Update.find(:all, :conditions =>[“user_id = ?”,
params[:user_id]])
When visiting the page I get this messageL
undefined method `updates’ for #Update:0xb7582750
Have I missed something rediculously obvious? this seems like it should
be a fairly trivial thing to get working but I’m pretty new to the whole
rails experience…
cheers,
lee
On 24 Apr 2008, at 21:07, Lee F. wrote:
show, however I’m having trouble with the find parameters.
def index
@user = User.find(params[:id])
@updates = Update.find(params[:id]).updates
I think you just wanted to write @user.updates assuming that
params[:id] is the id of a user.
Fred
Thanks for the quick reply Fred!
the params [:id] is a users id yes, do you mean to change the controller
to this:
def index
@user = User.find(params[:id])
@updates = @user.updates
end
this gave me an error of:
You have a nil object when you didn’t expect it!
The error occurred while evaluating nil.date
with the lines:
Extracted source (around line #19):
16:
Updates
17: <% for column in Update.content_columns %>
18:
19: <%= column.human_name %>: <%=h @update.send(column.name) %>
20:
21: <% end %>
22:
(which is where it begins outputting update information)
could this point at an error somewhere else in my code (if its
important, the app is mostly standard scaffold code)
Frederick C. wrote:
On 24 Apr 2008, at 21:07, Lee F. wrote:
show, however I’m having trouble with the find parameters.
def index
@user = User.find(params[:id])
@updates = Update.find(params[:id]).updates
I think you just wanted to write @user.updates assuming that
params[:id] is the id of a user.
Fred
btw, I just realised I was calling it @updates in the controller and
@update in the view, I fixed this and got a shiny new error:
undefined method `date’ for Update:Class
Extracted source (around line #19):
16:
Updates
17: <% for column in Update.content_columns %>
18:
19: <%= column.human_name %>: <%=h @updates.send(column.name)
%>
20:
21: <% end %>
22:
date is a field name in the updates table.
cheers,
Lee
at the risk of this becoming a monologue… I’ve fixed the problem
19: <%= column.human_name %>: <%=h @updates.send(column.name)
needed to be
19: <%= column.human_name %>: <%=h update.send(column.name)
cheers for the help explaining how to reference the tables Fred!