2017-01-27 56 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 ] } %> 

這是可行的!謝謝社區幫助我糾正我的問題並指出答案。