0

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

我创建了表格:

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>

我做错了什么?感谢您的帮助,我将不胜感激!

4

1 回答 1

2

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

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

你应该写

Team <%= user.team[:name]

容易忽略的错误:)

于 2012-03-13T20:47:13.190 回答