1

我有一个非常奇怪的问题,我有这个文件用于 User#show 视图:

%h1 My Appliances
.floatright= link_to "Add appliance", new_appliance_profile_path
%table
  %tr
    %th Category
    %th Manufacturer
    %th Model
    %th Room
    %th Hours On
    %th Hours Sleeping
    %th
  - @user.appliance_profiles.each do |ap|
    %tr{:class => cycle('list_line_odd', 'list_line_even')}
      %td= ap.appliance.category
      %td= ap.appliance.manufacturer
      %td= ap.appliance.model
      %td= ap.room.name
      %td= ap.hours_on
      %td= ap.hours_sleep
      %td= link_to "edit", edit_appliance_profile_path(ap)

并收到错误:undefined method 'category' for nil:NilClass

我的模型确实有一个类别字符串属性。这是什么意思,我该如何解决?

4

4 回答 4

2

ap.appliance.category, ap.appliance为零

您可以尝试根据它是否为 nil 来初始化它/打印

于 2012-05-18T15:47:47.873 回答
2

这意味着在此调用中:

%td= ap.appliance.category

appliancenil。如果不是所有人appliance_profiles都有一个没关系appliance,你可以这样做:

%td= ap.appliance.try(:category)

如果所有的appliance_profiles 都应该有一个appliance,你必须检查你的数据库是否有丢失的数据。

于 2012-05-18T15:48:36.957 回答
2

该错误意味着正在调用“类别”方法的变量为零。在这种情况下,该行是

%td= ap.appliance.category

因此,它ap.appliance解析为 nil。为什么,鉴于提供的信息,我无法判断。

于 2012-05-18T15:48:38.577 回答
0

这可能意味着您的一项操作没有保存记录,因此返回 nil。检查您的控制台。

于 2012-09-10T17:32:48.910 回答