3

我目前有一个用于日期条目的文本字段,我试图将年、月和日分成三个单独的条目,用“/”分隔。原始文本条目如下所示:

<%= f.text_field :date, :placeholder => 'YYYY/MM/DD' %>

我想将其拆分为三个 text_fields,并将它们附加在一起,并将其放入数据库中的日期条目中。我怎样才能做到这一点?

4

3 回答 3

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
于 2013-05-09T20:45:15.393 回答
0

您经常使用文本字段作为日期,因为您只需要一个字段。当您拥有三个不同的字段时,您应该考虑使用 select 代替。Rails 有一个日期辅助方法date_select,所以它会是这样的:

<%= f.date_select :date %>

这将创建一个选择数年,一个选择数月,一个选择数天。您可以在http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-date_select上阅读更多信息

于 2013-05-09T21:24:56.773 回答
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] %>

你有很多选择。

于 2013-05-09T20:48:53.257 回答