ruby-on-rails - 显示带有日期的 collection_select 下拉列表

标签 ruby-on-rails ruby

我正在尝试使用 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/

相关文章:

Ruby、SQLite 和三角函数

ruby - 将 jQuery 翻译成 Watir

ruby - 猴子修补对象产生奇怪的结果

Mysql2::Error: 指定的键太长;对于只有 87 个 db 字段的表,最大 key 长度为 767 字节

ruby-on-rails - ActiveRecord 锁是否必须在事务内发生?

ruby-on-rails - 仅在 Controller 中放置辅助方法的地方?

ruby-on-rails - 自定义 rails has_many 关联(通过 pg 数组)

ios - 如何在ruby on rails中使用apns gems发送推送通知(rpush)

ruby-on-rails - Rails 4 中的作用域

ruby - 使用 Ruby 调用 shell 脚本退出代码总是返回 0