我正在尝试在迭代中使用条件,但没有这样做,这里的场景:
在这种情况下,如果订单或产品存在,应该只显示订单和带有反馈的产品。
但即使存在也会显示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 :(得分: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 %>
注意:title
和name
是假定的列,请将其替换为您所需的/受尊重的属性。
请仔细阅读this以了解各种erb标记之间的区别。
比较:
if
条件,您尝试直接调用order
和product
,这会因为与feedback
相关而引发错误。<% %>
只执行ruby代码,您想要打印数据,因此需要使用<%= %>
。