0

这是一个非常初学者的问题,但我已经搜索并找不到任何东西。我试图遍历一个对象,然后将信息存储在一个数组(或对象?)中,以便我可以吐出一串项目。

<% @da = [] %>
<% @report.data_items.each do |di| %>
      <% if di.status == "Complete" %>
        <% @da += di.url_metric.da %> #not sure how to append to the end of the array
      <% end %>
<% end %>

帮助?我应该使用数组还是对象?

4

3 回答 3

1

似乎您出于某种原因在 ERB 模板中执行此操作。不。保持模板简洁明了。在控制器中进行这种计算。

这是一个更好的版本:

@da = @report.data_items.select {|di| di.status == 'Complete'}.
                         map{|di| di.url_metric.da }
于 2013-05-23T11:35:17.600 回答
0
@da = @report.data_items.collect{|di| di.url_metric.da if di.status == "Complete"}.compact
于 2013-05-23T11:35:25.247 回答
-1

这是您要完成的工作的简短变量:

@da = @report.data_items.select do |item|
  item.status == "Complete"
end.map { |item| item.url_metric.da }.join(", ")
于 2013-05-23T11:33:25.153 回答