[active record, zlaczenia] totalnie banalne pytanie

witam,
mam tabele players

[code]class CreatePlayers < ActiveRecord::Migration
def self.up
create_table :players do |t|
t.string :name
t.integer :team_id
end
end

end[/code]
oraz teams

class CreateTeams < ActiveRecord::Migration def self.up create_table :teams do |t| t.string :name end end
kontroler players.index

@players = Player.paginate :per_page => 25, :page => params[:page], :order => 'surname ASC'

i chcialbym zrobic tak, aby w widoku (/players/index.html.erb) miec jeszcze nazwe druzyny z jakiej jest player

Mysle, ze trzeba polaczyc te tabele w kontrolerze players, (ale do konca nie wiem jak).

Z gory dzieki za pomoc

Dlaczego nie zrobisz tego w relacji, jeden do wielu albo wiele do wielu (teams has many players)?

Wtedy wyświetlasz player.team.name .

W obecnej wersji ponieważ nie wiem jak masz modele zrobione, czy masz te relacje, można naprzykład:

t=Team.find(player.team_id) i <%= t.name if t %>

Związki między tabelami definiujesz w modelu, a nie w kontrolerze.

Modele:

[code=Ruby]class Player < ActiveRecord::Base
belongs_to :team
end

class Team < ActiveRecord::Base
has_many :players
end[/code]
I w widoku

<% @players.each do |player| %> Imię: <%= player.name %> Drużyna: <%= player.team.name %> <% end %>
Poczytaj o asocjacjach.

Tak mam takie relacje jak napisale tjeden, ale nie wiedzialem, ze tak moge sie odwolywac

<%= player.team.name %>

kombinowalem zupelnie inaczej - niepotrzebnie

dzieki za dobra rade

ok,a zanim poczytam, jak chcialbym zrobic sortowanie alfabetyczne, ale chcialbym aby zawodnicy posortowani byli od team_id
Tj. mam druzyne A i B i teraz wszystkich uporzadkowac alafabetycznie z A,a nastepnie uporzadkowac alfabetycznie zawodnikow z druzyny B.
To to jak zapisac?

chyba:

@players = Player.paginate :per_page => 25, :page => params[:page], :include => [:teams], :order => 'teams.name ASC'

ale nie pamiętam teraz dobrze czy paginate obsługuje eager loading. Będziesz musiał robić paginacje kolekcji.

wywalilo mi taki blad
‘Association named ‘teams’ was not found; perhaps you misspelled it?’

Nie mam za bardzo głowy do tego dziś, a pisze tak z buta. Więc pogrzeb na necie. Nie pamiętam teraz czy ma być team czy teams. Poczytaj także o join, coś typu:

@players = Player.find(:all,	:joins=>" INNER JOIN teams ON teams.id = players.team_id")

tutaj jest rzeczowo o tym:

http://www.fortytwo.gr/blog/18/9-Essential-Rails-Tips

Dzieki za wszystko wszystkim, dzis bardzo duzo sie nauczylem.

@Wojtek teams = bdb

pozdrawiam