我目前有一个文本字段的日期条目,我试图将年,月和日分成三个单独的条目,由'/'分隔。原来的文本输入看上去像:对于一个数据库条目的三个文本字段
<%= f.text_field :date, :placeholder => 'YYYY/MM/DD' %>
我想这个分成三个text_fields,并添加在一起,并把它放到数据库中的日期条目。 我该怎么做?
我目前有一个文本字段的日期条目,我试图将年,月和日分成三个单独的条目,由'/'分隔。原来的文本输入看上去像:对于一个数据库条目的三个文本字段
<%= f.text_field :date, :placeholder => 'YYYY/MM/DD' %>
我想这个分成三个text_fields,并添加在一起,并把它放到数据库中的日期条目。 我该怎么做?
您经常使用textfields作日期,因为您只需要一个字段。如果你有三个不同的领域,你应该考虑使用select来代替。 Rails的有日期的辅助方法date_select
,所以这将是somethink这样的:
<%= f.date_select :date %>
这将创建一个选择里,一个个,一个用于天。您可以在http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-date_select
添加三个虚拟属性的模型:
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
尝试使用https://github.com/plataformatec/simple_form
<%= f.input :deadline, :start_year => Date.today.year, :end_year => Date.today.year + 1, :order => [:day, :month, :year] %>
你有很多选择。