在 Rails 视图中循环遍历对象数组:意外行为

Posted

技术标签:

【中文标题】在 Rails 视图中循环遍历对象数组:意外行为【英文标题】:Cycling through array of objects within view in Rails: unexpected behaviour 【发布时间】:2009-01-30 12:14:44 【问题描述】:

我有一个显示一些事件的简单日历,这并没有给我预期的结果。代码如下:

<!-- Begin Calendar -->
<%= calendar(:year => @year, :month => @month, :first_day_of_week => 1) do |d|

    output = []
    output << render_calendar_cell(d.mday)

    if d.wday == 1
        @garden.plants.collect do |p| 
            if p.needs_sowing? (d.cweek)
                output << "This week sow: #p.name"
            end
        end
    end

    end
%>
<!-- end calendar-->

这是需要播种的吗?块内调用的方法:

def needs_sowing? (week)
      if !sow_out_week_min.blank? && !sow_out_week_max.blank?
        (sow_out_week_min..sow_out_week_max).include? (week)
      end 
end

当循环中只检查一个工厂时,这给了我正确的行为,但如果有多个,那么除了初始之外不会显示任何输出

output << render_calendar_cell(d.mday) 

(仅输出月份中的哪一天)。

谁能伸出援手让我知道我哪里可能出错了?或者获得了一些关于在循环中处理这种行为的更好方法的提示?

TIA

【问题讨论】:

【参考方案1】:

您应该使用@garden.plants.each 而不是collect。 Collect 应该用于过滤数组结果而不是循环它们。

【讨论】:

以上是关于在 Rails 视图中循环遍历对象数组:意外行为的主要内容,如果未能解决你的问题,请参考以下文章

遍历表格后,rails显示完整表格的数组[重复]

Swift 3:通过遍历视图数组来设置视图

在javascript中循环遍历数组中的对象

javaScript数组遍历

循环遍历Vue.js中的动态数组,然后根据对应的值将每个对象组件添加到单独组件中的div中?

angularjs怎么遍历每个对象的属性的值