Rails 4 - 在视图中显示来自不同模型的值

时间:2015-09-01 17:43:09

标签: ruby-on-rails ruby

我有一个模型,所有权。所有权属于另一个名为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 %>

任何帮助将不胜感激。

3 个答案:

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