Hi, A quick problem that is probably very easy. I have models, controllers and views for teams and fixtures. Team model (has_many :fixtures), Fixture model (belongs_to :team). I can create a new fixture via /fixtures/new that stores the id''s of the two teams selected (via collection_select''s) in "home_team_id" and "away_team_id" columns in the "fixtures" table. The trouble is I am having issues displaying the team names in the fixtures index view. Obviously normally I would use something like <%fixture.team.name %> but the key column isn''t standard naming (team_id) so that doesn''t work. Any ideas. Feel like I am being pretty dumb here! Cheers -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
> A quick problem that is probably very easy. > > I have models, controllers and views for teams and fixtures. Team model > (has_many :fixtures), Fixture model (belongs_to :team). I can create a > new fixture via /fixtures/new that stores the id''s of the two teams > selected (via collection_select''s) in "home_team_id" and "away_team_id" > columns in the "fixtures" table. > > The trouble is I am having issues displaying the team names in the > fixtures index view. Obviously normally I would use something like <%> fixture.team.name %> but the key column isn''t standard naming (team_id) > so that doesn''t work. > > Any ideas. Feel like I am being pretty dumb here!Check the docs for has_many... in particular... :foreign_key Specify the foreign key used for the association. By default this is guessed to be the name of this class in lower-case and “_id” suffixed. So a Person class that makes a has_many association will use “person_id“ as the default :foreign_key. :primary_key Specify the method that returns the primary key used for the association. By default this is id. -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Philip Hallstrom wrote in post #1028174:> :foreign_key > Specify the foreign key used for the association. > :primary_key > Specify the method that returns the primary key used for the > association. By default this is id.Hi Philip, Thanks for your reply. I have tried to use the :foreign_key with the following results. (fyi fixtures has changed to matches). The matches table has "home_team_id" and "away_team_id" columns. match.rb belongs_to :home_team, :foreign_key => ''home_team_id'' belongs_to :away_team, :foreign_key => ''away_team_id'' team.rb has_many :home_matches, :class_name => ''Team'' has_many :away_matches, :class_name => ''Team'' matches_controller.rb @matches = Match.all @teams = Team.all matches.html.erb <% @matches.each do |match| %> Home <%= match.home_team %> Away <%= match.away_team %><br> <% end %> I get the following when I load matches/index.html.erb ... Home #<Match:0x103cfafe0> Away #<Match:0x103cee948> Home #<Match:0x103cebf18> Away #<Match:0x103ce8278> The dev/log reads the following Started GET "/matches" for 127.0.0.1 at Mon Oct 24 23:00:54 +0100 2011 Processing by MatchesController#index as HTML Match Load (0.5ms) SELECT "matches".* FROM "matches" Team Load (0.4ms) SELECT "teams".* FROM "teams" Match Load (0.3ms) SELECT "matches".* FROM "matches" WHERE "matches"."id" = 1 LIMIT 1 Match Load (0.2ms) SELECT "matches".* FROM "matches" WHERE "matches"."id" = 2 LIMIT 1 CACHE (0.0ms) SELECT "matches".* FROM "matches" WHERE "matches"."id" = 2 LIMIT 1 Match Load (0.2ms) SELECT "matches".* FROM "matches" WHERE "matches"."id" = 3 LIMIT 1 Match Load (0.2ms) SELECT "matches".* FROM "matches" WHERE "matches"."id" = 7 LIMIT 1 Match Load (0.1ms) SELECT "matches".* FROM "matches" WHERE "matches"."id" = 6 LIMIT 1 Rendered matches/index.html.erb within layouts/application (16.0ms) Completed 200 OK in 38ms (Views: 20.5ms | ActiveRecord: 1.8ms) So, it is reading the table but just returning the wrong stuff. I don''t exactly know what one of <Match:0x103cebf18> is called so I don''t know what to search for to correct it. Any help much appreciated! -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 24 October 2011 23:03, Graham Dawe <lists-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> Philip Hallstrom wrote in post #1028174: > >> :foreign_key >> Specify the foreign key used for the association. >> :primary_key >> Specify the method that returns the primary key used for the >> association. By default this is id. > > Hi Philip, > > Thanks for your reply. I have tried to use the :foreign_key with the > following results. (fyi fixtures has changed to matches). The matches > table has "home_team_id" and "away_team_id" columns. > > match.rb > > belongs_to :home_team, :foreign_key => ''home_team_id'' > belongs_to :away_team, :foreign_key => ''away_team_id''You need to use :class_name here so that it knows what the foreign keys are pointing to.> > team.rb > > has_many :home_matches, :class_name => ''Team'' > has_many :away_matches, :class_name => ''Team'' > > matches_controller.rb > > @matches = Match.all > @teams = Team.all > > matches.html.erb > > <% @matches.each do |match| %> > Home <%= match.home_team %>You probably want match.home_team.name or something like that, you are trying to display the whole team object. Colin> Away <%= match.away_team %><br> > <% end %> > > I get the following when I load matches/index.html.erb ... > > Home #<Match:0x103cfafe0> Away #<Match:0x103cee948> > Home #<Match:0x103cebf18> Away #<Match:0x103ce8278> > > The dev/log reads the following > > Started GET "/matches" for 127.0.0.1 at Mon Oct 24 23:00:54 +0100 2011 > Processing by MatchesController#index as HTML > Match Load (0.5ms) SELECT "matches".* FROM "matches" > Team Load (0.4ms) SELECT "teams".* FROM "teams" > Match Load (0.3ms) SELECT "matches".* FROM "matches" WHERE > "matches"."id" = 1 LIMIT 1 > Match Load (0.2ms) SELECT "matches".* FROM "matches" WHERE > "matches"."id" = 2 LIMIT 1 > CACHE (0.0ms) SELECT "matches".* FROM "matches" WHERE "matches"."id" > = 2 LIMIT 1 > Match Load (0.2ms) SELECT "matches".* FROM "matches" WHERE > "matches"."id" = 3 LIMIT 1 > Match Load (0.2ms) SELECT "matches".* FROM "matches" WHERE > "matches"."id" = 7 LIMIT 1 > Match Load (0.1ms) SELECT "matches".* FROM "matches" WHERE > "matches"."id" = 6 LIMIT 1 > Rendered matches/index.html.erb within layouts/application (16.0ms) > Completed 200 OK in 38ms (Views: 20.5ms | ActiveRecord: 1.8ms) > > > So, it is reading the table but just returning the wrong stuff. I don''t > exactly know what one of <Match:0x103cebf18> is called so I don''t know > what to search for to correct it. > > Any help much appreciated! > > -- > 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. > For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en. > >-- gplus.to/clanlaw -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
Thanks Colin. That solved it, although I swear I already tried to do it like that! Your help is much appreciated. On Oct 25, 7:52 am, Colin Law <clan...-gM/Ye1E23mwN+BqQ9rBEUg@public.gmane.org> wrote:> On 24 October 2011 23:03, Graham Dawe <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote: > > > > > > > > > > > Philip Hallstrom wrote in post #1028174: > > >> :foreign_key > >> Specify the foreign key used for the association. > >> :primary_key > >> Specify the method that returns the primary key used for the > >> association. By default this is id. > > > Hi Philip, > > > Thanks for your reply. I have tried to use the :foreign_key with the > > following results. (fyi fixtures has changed to matches). The matches > > table has "home_team_id" and "away_team_id" columns. > > > match.rb > > > belongs_to :home_team, :foreign_key => ''home_team_id'' > > belongs_to :away_team, :foreign_key => ''away_team_id'' > > You need to use :class_name here so that it knows what the foreign > keys are pointing to. > > > > > team.rb > > > has_many :home_matches, :class_name => ''Team'' > > has_many :away_matches, :class_name => ''Team'' > > > matches_controller.rb > > > @matches = Match.all > > @teams = Team.all > > > matches.html.erb > > > <% @matches.each do |match| %> > > Home <%= match.home_team %> > > You probably want match.home_team.name or something like that, you are > trying to display the whole team object. > > Colin > > > > > > > > > > > Away <%= match.away_team %><br> > > <% end %> > > > I get the following when I load matches/index.html.erb ... > > > Home #<Match:0x103cfafe0> Away #<Match:0x103cee948> > > Home #<Match:0x103cebf18> Away #<Match:0x103ce8278> > > > The dev/log reads the following > > > Started GET "/matches" for 127.0.0.1 at Mon Oct 24 23:00:54 +0100 2011 > > Processing by MatchesController#index as HTML > > Match Load (0.5ms) SELECT "matches".* FROM "matches" > > Team Load (0.4ms) SELECT "teams".* FROM "teams" > > Match Load (0.3ms) SELECT "matches".* FROM "matches" WHERE > > "matches"."id" = 1 LIMIT 1 > > Match Load (0.2ms) SELECT "matches".* FROM "matches" WHERE > > "matches"."id" = 2 LIMIT 1 > > CACHE (0.0ms) SELECT "matches".* FROM "matches" WHERE "matches"."id" > > = 2 LIMIT 1 > > Match Load (0.2ms) SELECT "matches".* FROM "matches" WHERE > > "matches"."id" = 3 LIMIT 1 > > Match Load (0.2ms) SELECT "matches".* FROM "matches" WHERE > > "matches"."id" = 7 LIMIT 1 > > Match Load (0.1ms) SELECT "matches".* FROM "matches" WHERE > > "matches"."id" = 6 LIMIT 1 > > Rendered matches/index.html.erb within layouts/application (16.0ms) > > Completed 200 OK in 38ms (Views: 20.5ms | ActiveRecord: 1.8ms) > > > So, it is reading the table but just returning the wrong stuff. I don''t > > exactly know what one of <Match:0x103cebf18> is called so I don''t know > > what to search for to correct it. > > > Any help much appreciated! > > > -- > > Posted viahttp://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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > > For more options, visit this group athttp://groups.google.com/group/rubyonrails-talk?hl=en. > > -- > gplus.to/clanlaw-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
On 25 October 2011 11:24, 3quid <threequid-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Thanks Colin. That solved it, although I swear I already tried to do > it like that!Use a version control system (probably git) for controlling your code, and commit often. Then you can always look back and see exactly what you have tried. Do experimental stuff on a branch so you can easily chuck it away if it does not work, or merge it in if it does.> Your help is much appreciated.Glad to be of help Colin -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.