Rails 如何进行条件内迭代?
Rails how to make conditional inside iteration?
我正在尝试在迭代中使用条件,但没有成功,这里是场景:
在这种情况下,如果订单或产品存在,则应仅显示带有反馈的订单和产品。
但即使存在也显示 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 %>
我想这就是你想要做的,
<% @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
是假设的列,将其替换为您的 required/respected 属性。
请通过this了解各种erb标签之间的区别。
比较:
- 对于您尝试直接调用
order
和 product
的 if
条件,这将引发错误,因为它们与 feedback
.[=30= 相关]
<% %>
只是执行了 ruby 代码,你想打印数据所以需要使用 <%= %>
.
- 当你不打算使用它们时,不需要将它们保存在变量中。我在检查条件中是否存在对象时保存了它们,并且可以在不查询数据库的情况下显示。
我正在尝试在迭代中使用条件,但没有成功,这里是场景:
在这种情况下,如果订单或产品存在,则应仅显示带有反馈的订单和产品。
但即使存在也显示 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 %>
我想这就是你想要做的,
<% @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
是假设的列,将其替换为您的 required/respected 属性。
请通过this了解各种erb标签之间的区别。
比较:
- 对于您尝试直接调用
order
和product
的if
条件,这将引发错误,因为它们与feedback
.[=30= 相关] <% %>
只是执行了 ruby 代码,你想打印数据所以需要使用<%= %>
.- 当你不打算使用它们时,不需要将它们保存在变量中。我在检查条件中是否存在对象时保存了它们,并且可以在不查询数据库的情况下显示。