2013-10-01 2 views
0

С приведенным ниже кодом я пытаюсь выполнить только @ dataload_manuals.each, если есть результаты @dataload_manuals.Вложенные условия IF не работают корректно в режиме Rails

Когда это выполняется в учетной записи без @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>): 

ответ

1

С вашей ошибки это выглядит как @dataload_manuals не является массивом или активной записи отношение, но один экземпляр DataloadManual. Таким образом, ваш «если» будет правдой, но он не будет реагировать на «каждый».

Убедитесь, что @dataload_manuals содержит несколько записей и отвечает на них.

+0

Как я могу реагировать на каждый из них? – analyticsPierce

+0

ok, поэтому в контроллере @dataload_logs определялся как: DataloadLog.order ('created_at DESC'). Page (params [: page]). Find_by_account_id (current_user.account_id), который вызывает ошибку при запуске в консоли. Есть ли лучший способ вернуть записи из DataloadLog в область current_user.account_id? – analyticsPierce

+0

Предполагая, что ваши отношения настроены правильно, 'current_user.account.dataload_logs.order ('created_at DESC'). Page (params [: page])' (не уверен, что «журналы» являются опечатками и должны быть «руководствами», поскольку есть в вашем вопросе) –

0

@dataload_manuals похоже, является экземпляром DataloadManual, а не перечислимым, так что нечего продолжать итерации.

Смежные вопросы