我有一个模型,所有权。所有权属于另一个名为Team的模型。团队拥有所有权。所有权从数据库中的Team表中的'team_id'索引。
Ownerships db表中的一列是'team_id'。在所有权的索引视图中,我希望能够根据team_id从Team表中的:name列显示团队名称。我一直在黑客攻击几个小时没有成功。
所有权控制人:
class OwnershipsController < ApplicationController
def index
@ownerships = Ownership.all
@team = Team.all
end
def show
@ownership = Ownership.find(params[:id])
end
end
我的index.html.erb视图中与所有权相关的部分:
<% @ownerships.each do |ownership| %>
<tr>
<td><%= ownership.round %></td>
<td><%= ownership.pick %></td>
<td><%= ownership.team.team_id { |a| a.name } %></td>
#want to display team name above
</tr>
<% end %>
任何帮助将不胜感激。
答案 0 :(得分:4)
只需使用:
<td><%= ownership.team.name%></td>
因为您已经拥有所有权和团队模型之间的关联设置。
答案 1 :(得分:2)
由于您在视图中拥有多个所有权,因此请在团队关联上调用急切加载,然后引用团队名称。
<% @ownerships.eager_load(:team).each do |ownership| %>
<tr>
<td><%= ownership.round %></td>
<td><%= ownership.pick %></td>
<td><%= ownership.team.name %></td>
</tr>
<% end %>
通过从所有权到团队的加入,热切加载将提高页面效率,并且不需要进一步查询来获取每个所有权的团队名称。
如果没有团队可以拥有所有权,请使用:
<td><%= ownership.team.try(:name) %></td>
答案 2 :(得分:1)
所有权数据库表中的一列是&#39; team_id&#39;。
在这种情况下,你可以简单地去:
<% @ownerships.each do |ownership| %>
<%= ownership.team.name %>
<% end %>