rails表关系:如何输出相关值?

时间:2012-03-13 20:44:15

标签: ruby-on-rails table-relationships

我是Rails框架的新手并且尝试了很长时间来解决这个问题... 我想显示某个用户所属的团队名称,该名称适用于show action(用户详细信息),但不适用于索引操作(所有用户)

我创建了表格:

teams                                  users
-----------                            ---------------
id (integer)                           id(integer)
name (string)                          fname(string)
                                       lname(string)
                                       team_id(integer)

我有以下课程:

class Team < ActiveRecord::Base        class User < ActiveRecord::Base
attr_accessible :name, :user_id        attr_accessible :fname, :lname, :team_id
has_many :users                        belongs_to :team

然后我有以下用户控制器:

class UsersController < ApplicationController
def show
  @user = User.find(params[:id])
end 

def index
  @users = User.paginate(page: params[:page], per_page: 15)
end

..显示用户团队名称的代码是

Team: <%= @user.team[:name] %>

...工作得很好......但是,当我尝试在索引视图中使用相同的代码时,我得到一个错误“未定义的方法`团队'为nil:NilClass”。

<table class="table table-striped">
  <% @users.each do |user| %>
<tr>
      <td>
        <%= "#{user.fname} #{user.lname}" %>
      </td>
  <td>
    Team: <%= @user.team[:name] %>
  </td> 
    </tr>
  <% end %>
</table>

我做错了什么?谢谢你的帮助,我真的很感激!

1 个答案:

答案 0 :(得分:2)

你在一个街区内。 而不是做

Team: <%= @user.team[:name]

你应该写

Team <%= user.team[:name]

容易忽视的错误:))