Rails - 在View中显示相关数据

时间:2014-07-21 14:33:33

标签: ruby-on-rails ruby ruby-on-rails-4

以下是我的模特:

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

1 个答案:

答案 0 :(得分:4)

显然,至少有一个User记录没有关联Account,因此user.account会返回nil。直接回答你的问题:不,它与你的控制器无关(控制器代码是正确的)。

如果您允许没有帐户的用户,则可以使用Object#try方法避免错误:

<%= user.account.try(:name) %>

此方法返回实际帐户名称(如果存在)。否则(即如果user.account返回nil),则返回nil