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 %>

注意:titlename 是假设的列,将其替换为您的 required/respected 属性。 请通过this了解各种erb标签之间的区别。

比较:

  • 对于您尝试直接调用 orderproductif 条件,这将引发错误,因为它们与 feedback.[=30= 相关]
  • <% %> 只是执行了 ruby 代码,你想打印数据所以需要使用 <%= %>.
  • 当你不打算使用它们时,不需要将它们保存在变量中。我在检查条件中是否存在对象时保存了它们,并且可以在不查询数据库的情况下显示。