协会命名未找到Rails

时间:2014-01-27 15:26:50

标签: html ruby-on-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>

这是错误: 在Teamplayer上找不到名为“LivePlayer”的协会;也许你拼错了?

所以我的问题是问题是什么。

  1. 模特中的关系?
  2. 关系是否应该有表名而不是模型名,即:live_players而不是liveplayer?
  3. 或者是我使用html获取我想要的值的方式?
  4. 最后,我想得到一个特定球队的球员名单,即球队1的所有球员

    我还有另一个表,它将两个表相互关联,每个表的id将存储在第三个表中。但首先我需要弄清楚错误的含义。

    更新 我不再得到关联错误,但没有显示,在html的选择框中,我已经更新了上面的模型和上面的html

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

belongs_to通常是单数,特别是因为你的模型是单数的。如果该类是骆驼式的,请使用短划线。

belongs_to :live_player

此外 - 看起来TeamPlayer是一个连接表,其他类应该与它有关联。 E.g。

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 %>