在 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 视图中循环遍历对象数组:意外行为的主要内容,如果未能解决你的问题,请参考以下文章