我是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>
我做错了什么?谢谢你的帮助,我真的很感激!
答案 0 :(得分:2)
你在一个街区内。 而不是做
Team: <%= @user.team[:name]
你应该写
Team <%= user.team[:name]
容易忽视的错误:))