2017-05-08 61 views
0

我試圖在迭代中使用條件,但沒有工作,所以這裏的場景:Rails如何使條件內迭代?

在這種情況下,如果訂單或產品存在應該只顯示訂單和產品的反饋。

但即使存在與odata和pdata顯示反饋。

有人知道爲什麼嗎?

<% @feedbacks.each do |feedback| %> 
     <% if order.present? && product.present? %> 
     <% order = feedback.order %> 
     <% product = order.product %> 
     <% else %> 
<% odata = feedback.odata %> 
    <% pdata = odata.pdata %> 
    <% end %> 
+0

您錯過了一個'end'。 'each'執行'do'和'end'之間的塊。 –

+0

謝謝亞歷杭德羅不錯,是有更多的代碼下來,所以,我只是pust那部分 – bookaka

+1

好吧,請看看@Md。 Farhan Memon的asnwer,請注意這個答案的縮進,並用這個標識符編輯你的Post。 –

回答

1

我想這是你正在嘗試做的,

<% @feedbacks.each do |feedback| %> 
    <% if (order = feedback.order).present? && (product = feedback.product).present? %> 
    <%= order.title %> 
    <%= product.title %> 
    <% else %> 
    <%= (odata = feedback.odata).name %> 
    <%= odata.pdata.name %> 
    <% end %> 
<% end %> 

注:titlename假定列,你需要/推崇屬性替換它。 請通過this瞭解各種erb標籤之間的區別。

比較:

  • if條件你想直接調用orderproduct,因爲它們都涉及到feedback這將引發錯誤。
  • <% %>只是執行紅寶石代碼,你想打印數據,所以需要使用<%= %>
  • 當你不打算使用它時,不需要將它們保存在變量中。我在檢查條件中存在的對象時保存了它們,並且可以在不查詢數據庫的情況下顯示它們。
+0

是的,但這個說法和我做的不一樣嗎? – bookaka

+0

現在顯示未定義的局部變量或方法'產品'爲#<# bookaka

+0

@bookaka檢查更新後的答案,如果仍然存在錯誤,哪一行? –