options_from_collection_for_select 的 text_method 日期转换
options_from_collection_for_select's text_method date conversion
我打算创建一个下拉列表供选择。
预期结果:
March 2016
August 2016
使用这些代码,我的下拉列表如下所示,因为数据库正在存储 YY-MM-DD
2016-03-01
2016-08-01
这是我的代码:
<%= form_tag('/admin/users', method: :get) do %>
<%= select_tag "intake_date", options_from_collection_for_select(Membership.select(:intake_date).distinct, 'intake_date', 'intake_date')%>
<%= submit_tag %>
<% end %>
我试过将 options_from_collection_for_select
中的 text_method
更改为
Membership.all.pluck(:intake_date).uniq.inject{ |date| date.strftime(%B %Y) }
结果还是不如预期
集合select的value
和text
方法都可以响应方法调用,产生对象的实例,结果将用于select选项。
对于你的情况,你应该能够解决:
select_tag 'intake_date', options_from_collection_for_select(Membership.pluck(:intake_date), :to_s, proc{|date| date.strftime("%B %Y")})
这是假设您将在将记录保存到数据库之前解析日期,因为值方法是日期字符串
我打算创建一个下拉列表供选择。
预期结果:
March 2016
August 2016
使用这些代码,我的下拉列表如下所示,因为数据库正在存储 YY-MM-DD
2016-03-01
2016-08-01
这是我的代码:
<%= form_tag('/admin/users', method: :get) do %>
<%= select_tag "intake_date", options_from_collection_for_select(Membership.select(:intake_date).distinct, 'intake_date', 'intake_date')%>
<%= submit_tag %>
<% end %>
我试过将 options_from_collection_for_select
中的 text_method
更改为
Membership.all.pluck(:intake_date).uniq.inject{ |date| date.strftime(%B %Y) }
结果还是不如预期
集合select的value
和text
方法都可以响应方法调用,产生对象的实例,结果将用于select选项。
对于你的情况,你应该能够解决:
select_tag 'intake_date', options_from_collection_for_select(Membership.pluck(:intake_date), :to_s, proc{|date| date.strftime("%B %Y")})
这是假设您将在将记录保存到数据库之前解析日期,因为值方法是日期字符串