我目前有一个日期条目的文本字段,我正在尝试将年,月和日分成三个单独的条目,分隔为'/'。原始文本条目如下所示:
<%= f.text_field :date, :placeholder => 'YYYY/MM/DD' %>
我想将其拆分为三个text_fields,并将它们附加在一起,并将其放入数据库中的日期条目中。 我怎么能这样做?
答案 0 :(得分:0)
向模型添加三个虚拟属性:
attr_accessor :form_month, :form_day, :form_year
然后将以下内容放在控制器中,而不是模型中:
def create
# ...
form_date = [ params[:form][:form_month], \
params[:form][:form_day] ,
params[:form][:form_year] ].join("/")
@my_model.date = Date.parse(form_date)
# ... save and return ...
end
手动检查每个表单参数的有效性是个好主意。如果输入不完整的日期字符串,Date#parse
可能会吐出错误的日期。
Date.parse "2005/11/4"
# => Fri, 04 Nov 2005
Date.parse "/11/4"
# => Mon, 04 Nov 2013
答案 1 :(得分:0)
尝试使用https://github.com/plataformatec/simple_form
<%= f.input :deadline, :start_year => Date.today.year, :end_year => Date.today.year + 1, :order => [:day, :month, :year] %>
你有很多选择。
答案 2 :(得分:0)
您经常使用文本字段作为日期,因为您只需要一个字段。如果您有三个不同的字段,您应该考虑使用select。 Rails有一个日期助手方法date_select
,所以它会是这样的想法:
<%= f.date_select :date %>
这会创建一个选择多年,一个用于几个月,一个用于几天。 您可以在http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-date_select
上阅读更多内容