循环遍历数据,在Ruby on Rails中存储为数组

时间:2013-05-23 11:31:18

标签: ruby-on-rails loops

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

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

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

3 个答案:

答案 0 :(得分:1)

由于某种原因,似乎您在ERB模板中执行此操作。别。保持模板清晰简单。在控制器中进行这种计算。

这是一个更好的版本:

@da = @report.data_items.select {|di| di.status == 'Complete'}.
                         map{|di| di.url_metric.da }

答案 1 :(得分:0)

@da = @report.data_items.collect{|di| di.url_metric.da if di.status == "Complete"}.compact

答案 2 :(得分:-1)

以下是您要完成的内容的缩短:

@da = @report.data_items.select do |item|
  item.status == "Complete"
end.map { |item| item.url_metric.da }.join(", ")