2012-03-13 7 views
0

私はRailsフレームワークに新しく、この問題を解決するのに非常に時間がかかりました... 特定のユーザが所属するチーム名を表示したいとします。これはshowアクション(ユーザの詳細)では機能しますが、インデックスでは機能しませんアクション(すべてのユーザー)rails table relationships:関連する値を出力する方法は?

私が作成したテーブル:

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 

I以下のユーザコントローラを持っています。

私は、インデックスビューで同じコードを使用しようとすると
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] %> 

で表示するためのコードを... ..andこのように、私はエラー "nilのための未定義のメソッド` team ':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> 

どうしたのですか?助けてくれてありがとう、本当にありがとう!

答えて

2

あなたはブロック内にいます。代わりに

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

を行うの あなたは明確にするために:)

+1

を見落とすこと

Team <%= user.team[:name] 

簡単にバグを記述する必要があり、問題は、それ自体がブロックにいるということではありません - それはということですあなたのインデックスアクションでは、決して '@ users'に値を割り当てません。ブロックでは、使用しているパラメータは' user'であり、 '@ users'ではありません – bblack

+0

ありがとうございました! – coffeelovesmilk

関連する問題