JL Smith
2006-Dec-23 17:55 UTC
Associations and accessors...has to be something obvious I''m
There has to be something obvious I''m overlooking in regards to associations and accessors. I think I just need a good shove in the right direction. TIA! schema: CREATE TABLE `ticket_statuses` ( `id` int(11) NOT NULL, `status` varchar(255) default NULL, PRIMARY KEY (`id`) ); CREATE TABLE `tickets` ( `id` int(11) NOT NULL, `title` varchar(255) default NULL, `details` text, `status_id` int(11) default NULL, `opened_at` datetime default NULL, `closed_at` datetime default NULL, `last_activity_at` datetime default NULL, PRIMARY KEY (`id`), KEY `fk_ticket_status` (`status_id`), CONSTRAINT `fk_ticket_status` FOREIGN KEY (`status_id`) REFERENCES `ticket_statuses` (`id`) ); models: Ticket belongs_to :ticket_status TicketStatus has_many :tickets ticket controller: ... def list @ticket_pages, @tickets = paginate :tickets, :order => "id DESC",:per_page => 10 end ... ticket list view: ... <% for ticket in @tickets %> <tr class="<%= cycle("list-line-odd", "list-line-even") %>"> <td class="name"><%= link_to ticket.id, { :action => ''show'', :id => ticket }, :class => ''ticket-yellow'' %></td> <td class="name"><%= h(ticket.title) %></td> <td><%= ticket.ticket_status.status %></td> <td><%= ticket.last_activity_at %></td> </tr> <% end %> ... error: You have a nil object when you didn''t expect it! The error occured while evaluating nil.status Extracted source (around line #16): 13: <tr class="<%= cycle("list-line-odd", "list-line-even") %>"> 14: <td class="name"><%= link_to ticket.id, { :action => ''show'', :id => ticket }, :class => ''ticket-yellow'' %></td> 15: <td class="name"><%= h(ticket.title) %></td> 16: <td><%= ticket.ticket_status.status %></td> 17: <td><%= ticket.last_activity_at %></td> 18: </tr> 19: <% end %> I''m trying to display the ticket''s actual status, not the status_id. Do I have an association setup incorrectly? Am I breaking a naming convention or something? Thanks for any help! -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
ryan.raaum-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
2006-Dec-23 18:00 UTC
Re: Associations and accessors...has to be something obvious I''m
On Dec 23, 12:55 pm, JL Smith <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> There has to be something obvious I''m overlooking in regards to > associations and accessors. I think I just need a good shove in the > right direction. TIA! > > schema: > CREATE TABLE `ticket_statuses` ( > `id` int(11) NOT NULL, > `status` varchar(255) default NULL, > PRIMARY KEY (`id`) > ); > > CREATE TABLE `tickets` ( > `id` int(11) NOT NULL, > `title` varchar(255) default NULL, > `details` text, > `status_id` int(11) default NULL, > `opened_at` datetime default NULL, > `closed_at` datetime default NULL, > `last_activity_at` datetime default NULL, > PRIMARY KEY (`id`), > KEY `fk_ticket_status` (`status_id`), > CONSTRAINT `fk_ticket_status` FOREIGN KEY (`status_id`) REFERENCES > `ticket_statuses` (`id`) > ); > > models: > Ticket belongs_to :ticket_status > TicketStatus has_many :ticketsTicket belongs_to :ticket_status, :foreign_key => "status_id" TicketStatus has_many :tickets, :foreign_key => "status_id" The problem you are facing is because rails can''t infer the foreign key properly from the model name TicketStatus (it''s looking for ticket_status_id). Best, -r> > ticket controller: > ... > def list > @ticket_pages, @tickets = paginate :tickets, :order => "id > DESC",:per_page => 10 > end > ... > > ticket list view: > ... > <% for ticket in @tickets %> > <tr class="<%= cycle("list-line-odd", "list-line-even") %>"> > <td class="name"><%= link_to ticket.id, { :action => ''show'', > :id => ticket }, :class => ''ticket-yellow'' %></td> > <td class="name"><%= h(ticket.title) %></td> > <td><%= ticket.ticket_status.status %></td> > <td><%= ticket.last_activity_at %></td> > </tr> > <% end %> > ... > > error: > You have a nil object when you didn''t expect it! > The error occured while evaluating nil.status > > Extracted source (around line #16): > > 13: <tr class="<%= cycle("list-line-odd", "list-line-even") %>"> > 14: <td class="name"><%= link_to ticket.id, { :action => ''show'', > :id => ticket }, :class => ''ticket-yellow'' %></td> > 15: <td class="name"><%= h(ticket.title) %></td> > 16: <td><%= ticket.ticket_status.status %></td> > 17: <td><%= ticket.last_activity_at %></td> > 18: </tr> > 19: <% end %> > > I''m trying to display the ticket''s actual status, not the status_id. Do > I have an association setup incorrectly? Am I breaking a naming > convention or something? Thanks for any help! > > -- > Posted viahttp://www.ruby-forum.com/.-- Ryan Raaum http://raaum.org http://rails.raaum.org -- Rails docs http://locomotive.raaum.org -- Self contained Rails for Mac OS X --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
JL Smith
2006-Dec-23 18:42 UTC
Re: Associations and accessors...has to be something obvious I''m
Wow, that was easy. Thanks for the help! --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---