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.categoryap.applianceゼロです

nilかどうかに基づいて、初期化/印刷を試みることができます

于 2012-05-18T15:47:47.873 に答える
2

これは、この呼び出しで次のことを意味します。

%td= ap.appliance.category

applianceですnil。すべてappliance_profilesに が含まれていなくても問題ない場合はappliance、次のようにすることができます。

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

すべてにが含まれているappliance_profiles 必要があるappliance場合は、データベースに欠落データがないか確認する必要があります。

于 2012-05-18T15:48:36.957 に答える
2

このエラーは、「category」メソッドが呼び出されている変数が nil であることを意味します。この場合、行は

%td= ap.appliance.category

したがって、それはap.appliancenil に解決されます。なぜ、提供された情報を考えるとわかりません。

于 2012-05-18T15:48:38.577 に答える
0

アクションの 1 つがレコードを保存していないため、nil が返される可能性があります。コンソールを確認してください。

于 2012-09-10T17:32:48.910 に答える