以下是我的模特:
class Account < ActiveRecord::Base
has_many :users
# Data name:string
class User < ActiveRecord::Base
belongs_to :account
因此,当我尝试在视图index.html.erb中调用与用户关联的帐户名称时:
<%= user.account.name %>
我收到错误
NoMethodError in Users#index
undefined method `name' for nil:NilClass
是否与我的控制器有关?
def index
@users = User.all
end
答案 0 :(得分:4)
显然,至少有一个User
记录没有关联Account
,因此user.account
会返回nil
。直接回答你的问题:不,它与你的控制器无关(控制器代码是正确的)。
如果您允许没有帐户的用户,则可以使用Object#try
方法避免错误:
<%= user.account.try(:name) %>
此方法返回实际帐户名称(如果存在)。否则(即如果user.account
返回nil
),则返回nil
。