Cross referenced tables

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!