0

Railsフレームワークを初めて使用し、この問題を修正するために非常に長い時間を費やしました...特定のユーザーが属するチーム名を表示したいのですが、これは表示アクション(ユーザーの詳細)では機能しますが、インデックスアクション(すべてユーザー)

私はテーブルを作成しました:

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

...これは完全に正常に機能します...ただし、このようにインデックスビューで同じコードを使用しようとすると、「undefined method `team'for 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 に答える