0

我有一个页面可以输出系统中存在的所有用户配置文件。它以前工作,我没有改变任何东西,现在它不工作。它告诉我,我有“nil:NilClass 的未定义方法 `profile_name'”,但我在应用程序的其他地方多次引用 profile_name。这是索引视图页面:

<% @profiles.each do |profile| %>
    <%= link_to profile.user.inspect, profile_path(profile.user.profile_name) %><br><br>
<% end %>

这是配置文件模型:

class Profile < ActiveRecord::Base
    belongs_to :user
end

这是用户模型:

class User < ActiveRecord::Base
    has_one :profile

这是配置文件控制器:

def index
    @profiles = Profile.all
end

此外,数据库中的配置文件表有一个列 user_id。另外,我检查了我的数据库,所有用户都有一个个人资料名称。在个人资料页面上,我引用了@user.profile.(profile 属性),因此我知道 has_one/belongs_to 关系有效。我不知道该怎么办。请帮忙。

谢谢。

4

2 回答 2

0

无论出于何种原因,您的profile.user都是nil. 由于nil没有.profile_name定义方法,因此您会收到错误消息。

我的猜测是有一个@profiles没有user_id定义的配置文件。

于 2013-10-25T16:34:54.677 回答
0

您的所有个人资料都有user_id价值吗?您可能需要考虑执行以下操作来验证user_id所有配置文件都存在:

Profile.pluck :user_id

我怀疑配置文件对象/记录没有 a user_id,因此遍历 viaprofile.user.profile_name会呈现 nil 类错误。

于 2013-10-25T16:37:04.883 回答