2017-01-27 83 views
1

我正在尝试使用日期名称填充最近6天的f.select。我希望由他们的日期名称提供的字段,但在内部,我想要保存日期名称代表的NOW之前的日期。填写与最近6天相关的f.select日期名称

@days = [ ] 

6.downto(0).each do |number| 
    @days << number.days.ago 
end 

这会给我最后的日子,这是我希望能够选择保存的数据。 我希望填入这些日期的选择字段,但仅限于日期名称。 如果我这样做....

@days.each do |d| 
    @daynumber = d.wday 
end 

然后我得到...

日期:: DayNames中[@daynumber]

..... ERROR..It着将数组隐式转换为整数。

没有线索。

回答

0

你在正确的轨道上,但你需要迭代该数组以获得日期名称查找工作。幸运的是,Ruby具有完美的内置方法,Enumerable#map也许是最有用的。

试试这个:

或者,如果你不需要临时数组其他一些原因,你可以做整个事情在一行是这样的:

>> day_names = 6.downto(0).map { |number| Date::DAYNAMES[number.days.ago.wday] } 
=> ["Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] 
+0

谢谢你的帮助,但我还没有完成。在我的表单上选择我想要保存日期格式的日期。所以我尝试了这个... f.select:backup,@ days.map {| d | Date :: DAYNAMES [d.wday]}。它以日期格式保存日期,但不管选择如何,它只保存今天的日期,而不保存所选日期的选定日期。我在做错了吗? –

0

我在研究地图和收集时已经弄清楚了。

<%= f.select :backup, @days.collect { |d| [ Date::DAYNAMES[d.wday], d ] } %> 

这是可行的!谢谢社区帮助我纠正我的问题并指出答案。