0

以下のコードでは、@dataload_manuals の結果がある場合にのみ @dataload_manuals.each を実行しようとしています。

これを @dataload_manuals のないアカウントで実行すると、エラーは発生しません。ただし、@dataload_manuals のアカウントの場合、以下のエラーが発生します。

また、if @dataload_manuals 行を削除すると、@dataload_manuals のアカウントが正しく表示されます。

これを達成する正しい方法は何ですか?アドバイスをよろしくお願いします。

私の見解からのHAML:

%table
  %tr
    %th Connector
    %th User
    %th Last run
    - if @dataload_manuals
      - @dataload_manuals.each do |d|
        %tr
          %td Manual
          %td= d.user ? d.user.email : ''
          %td= d.updated_at

私が得るエラーメッセージ:

ActionView::Template::Error (undefined method `each' for #<DataloadManual:0x00000003a31468>):
4

2 に答える 2

1

エラーから、@dataload_manuals は配列またはアクティブなレコード関係ではなく、DataloadManual の単一インスタンスのように見えます。したがって、「if」は true になりますが、「each」には応答しません。

@dataload_manuals に実際に複数のレコードが含まれており、それぞれに応答していることを確認してください。

于 2013-10-01T20:57:28.660 に答える