rails的一个数据库条目的三个文本字段

时间:2013-05-09 20:28:23

标签: ruby-on-rails database forms textfield

我目前有一个日期条目的文本字段,我正在尝试将年,月和日分成三个单独的条目,分隔为'/'。原始文本条目如下所示:

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

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

3 个答案:

答案 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

上阅读更多内容