2014-01-27 56 views
0

我已經看了整個互聯網,但由於某些原因,這些答案是接近,但他們不幫助我。協會命名沒有被發現Rails

所以我有一個球員表和一個球隊表。一名球員可以屬於多個球隊。一支球隊可以有很多球員。

因此,這裏是我的模型: Liveplayer

class LivePlayer < ActiveRecord::Base 
has_many :teamplayers 
has_many :fteams, :through => :teamplayers 
end 

Fteam

class Fteam < ActiveRecord::Base 
belongs_to :liveplayer 
end 

Teamplayer

class Teamplayer < ActiveRecord::Base 
belongs_to :live_player 
belongs_to :fteam 
end 

表的名稱分別爲live_players和fteams

下面是HTML:

<select id = "test4" style= float:left> 
<% Teamplayer.includes(:live_player).all do |tp| %> 
    <option> <%=tp.id %></option> <- This returns nothing right now 
<% end %> 
</select> 

以下是錯誤: 協會命名爲 'LivePlayer' 上Teamplayer沒有被發現;也許你拼錯了嗎?

所以我的問題是,哪個是問題。

  1. 模型中的關係?
  2. 關係是否應該有表格名稱而不是模型名稱:即live_players而不是liveplayer?
  3. 或者是我使用html來從我想要的值中獲取值的方式?

在最後,我希望得到一個特定團隊的球員名單,即在隊所有播放器11

我也有另一個表可通過採用ID用的2臺到每個其它元素進行關聯每個表將存儲在第三個表中。但首先我需要弄清楚錯誤的含義。

UPDATE 我沒有得到該協會的錯誤更多,但沒有顯示,在HTML中的選擇框,我已經更新了我的上述模型和HTML以上

+1

「Teamplayer」類的代碼? – mihai

+0

'類Teamplayer user3240928

+0

而且這條線將不會在控制檯中運行:'Teamplayer.includes(:live_player).all'它給關聯錯誤:在Teamplayer中找不到關聯live_player。查看模型更新 – user3240928

回答

0
<% Teamplayer.includes(:live_players).all do |tp| %> 
    <option> <%=tp.teamid %></option> 
<% end %> 
+0

好的一些進展,現在我得到這個:未初始化的常量Teamplayer :: LivePlayers – user3240928

+0

好吧!在哪一行? – itsnikolay

+0

這一行:<%Teamplayer.includes(:live_players).all do | tp | %> – user3240928

0

belongs_to的通常單數,特別是因爲你的模型是單數。如果課堂是駱駝式的,使用破折號。

belongs_to :live_player 

另外 - 它看起來像TeamPlayer是一個連接表,其他類應該有它的關聯。例如。

class LivePlayer < ActiveRecord::Base 
    has_many :team_players 
    has_many :fteams, :through => :team_players 
end 

fteam上是否有team_player_id?如果是這樣,那是屬於 - 也許是船長或團隊的創造者?如果是這樣,你就會有這樣的事情:

class Fteam < ActiveRecord::Base 
    belongs_to :live_player 
    has_many :team_players 
    has_many :live_players, :through => :team_players 
end 

在形式,讓團隊的ID,您可能需要使用的fteam代替team_player - 它不會有重複。

<% Fteam.all do |t| %> 
    <option> <%= t.id %></option> 
<% end %> 
+0

時查看上面的模型,所以belongs_to:live_player是Teamplayer應該做的事情嗎?是的,teamplayer是一個連接表,有2個字段playerid和teamid。 Fteam沒有teamplayer id。對於表單,如果我想將一個團隊加載到列表中,那麼我可以使用Fteam ID來做到這一點? – user3240928

+0

'<%Fteam.all do | t | %> <% end %>'不返回 – user3240928

+0

是的 - TeamPlayer應該有belongs_to:live_player。您可能想要在控制檯中測試所有這些。 'rails c'並嘗試Fteam.all來查看db中的內容。而且,Rails是什麼版本? – Swards