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>
どうしたのですか?助けてくれてありがとう、本当にありがとう!
を見落とすこと
簡単にバグを記述する必要があり、問題は、それ自体がブロックにいるということではありません - それはということですあなたのインデックスアクションでは、決して '@ users'に値を割り当てません。ブロックでは、使用しているパラメータは' user'であり、 '@ users'ではありません – bblack
ありがとうございました! – coffeelovesmilk