Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails如何在迭代中生成条件?_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails如何在迭代中生成条件?

Ruby on rails Rails如何在迭代中生成条件?,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我试图在迭代中使用条件,但没有成功,下面是场景: 在这种情况下,如果订单或产品存在,则应仅显示带有反馈的订单和产品 但即使存在,也要用odata和pdata显示反馈 有人知道为什么吗 <% @feedbacks.each do |feedback| %> <% if order.present? && product.present? %> <% order = feedback.order %> <

我试图在迭代中使用条件,但没有成功,下面是场景:

在这种情况下,如果订单或产品存在,则应仅显示带有反馈的订单和产品

但即使存在,也要用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
是假定列,请将其替换为所需/受尊重的属性。 请通读以了解各种erb标签之间的差异

比较:

  • 对于
    if
    条件,您试图直接调用
    order
    product
    ,这将抛出错误,因为它们与
    反馈相关
  • 只执行ruby代码,您想要打印数据,因此需要使用
  • 不使用变量时,无需将它们保存在变量中。我在检查条件中是否存在对象时保存了它们,并且可以在不查询数据库的情况下显示它们

您缺少一个
end
每个
执行
do
end
之间的块。谢谢你,Alejandro没有遗漏的是有更多的代码,所以,我只是跳过那部分好的,请看一下@Md.Farhan Memon的asnwer,请注意这个答案的缩进,并用这个标识编辑你的帖子。是的,但是这句话和我说的不一样?现在为#@bookaka显示未定义的局部变量或方法“product”检查更新的答案,如果仍然有错误,哪一行?@md farhan memon ok。那么,你的方法和我的有什么不同?看起来是一样的