2013-10-01 66 views
0

下面的代碼我試圖只執行@ dataload_manuals.each,如果有@dataload_manuals結果。HAML嵌套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

好的,所以在控制器@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])'(不知道「logs」是否是拼寫錯誤,應該是「手冊」在你的問題中) –

0

@dataload_manuals似乎是DataloadManual的一個實例,而不是一個枚舉,所以沒有什麼可迭代的。

相關問題