我正在尝试使用 collection_select 为某些日期创建一个简单的下拉列表,但我很难将日期显示为从现在开始的时间(即“从今天开始一个月”)
到目前为止我有:
def dates_for_review_select
[Date.today, (Date.today + 2.weeks), (Date.today + 1.month), (Date.today + 2.months), (Date.today + 3.months)]
end
和
<%= f.collection_select :uk_review_at, dates_for_review_select, :to_s, :to_s, {}, :class => "form-control" %>
(从这里 -> RoR - collection_select from array )
但我不知道如何更改日期的显示方式。目前它将它们显示为正常日期,但我希望它们使用 rails "distance_of_time_in_words"帮助程序显示,因此它以文字表示日期有多远。
但我不知道如何或在哪里实现这个?有什么想法吗?
最佳答案
options_for_select
将取一个数组数组,每个子数组的第一个元素是显示值,第二个元素是返回值。
所以这应该可行...
def dates_for_review_select
[Date.today, (Date.today + 2.weeks), (Date.today + 1.month), (Date.today + 2.months), (Date.today + 3.months)]
end
<%= f.select :uk_review_at, options_for_select(dates_for_review_select.map{|d| [distance_of_time_in_words(Date.today, d), d]}), {}, :class => "form-control review-date" %>
编辑为使用 camillavk 使用的最终版本。
关于ruby-on-rails - 显示带有日期的 collection_select 下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32702894/