使用form_for正确存储日期信息

时间:2013-01-29 00:13:37

标签: ruby-on-rails form-for rails-activerecord

我有一个允许用户创建活动的表单。用户填写的字段之一是日期。目前这是提交日期的代码:

<%= u.label :date %> <%= u.text_field :date, :placeholder => 'mm/dd/yyyy' %>

出于某种原因,如果用户输入01/02/2012,它会存储为dd / mm / yyyy,认为该事件是在2月1日而不是1月2日。我已经配置了我的初始化程序文件,以我希望的方式显示日期/日期时间(正如这里的几个帖子所推荐的那样),但这仍然是一个问题

更新 - 这是我的完整表格:

    <%= form_for(@party_profile) do |u|%>
    <p>
        <%= u.label :name %><%= u.text_field :name %>
    </p>

    <p>
        <%= u.label :location %><%= u.text_field :location %>
    </p>

    <p>
         <%= u.text_field :date, :placeholder => 'dd/mm/yyyy' %>

    </p>

    <p>
        <%= u.label :password %> <%= u.text_field :password %>
    </p>

    <%= u.submit "Let's Party!", :class => "btn btn-primary" %>
    <% end %>

我尝试使用select_date替换u.text_field,如下所示,但后来我收到错误:

  undefined method `select_date' for #<ActionView::Helpers::FormBuilder:0x007f9e5e8c69d8>

3 个答案:

答案 0 :(得分:4)

<%= u.label :date %> <%= u.date_select(:date, :order => [:month, :day, :year]) %>

是我能想到的最好的 - 仍然没有格式化我想要的方式

答案 1 :(得分:2)

我将它用于我的日期:

    <%= u.label :date %>
    <%= u.date_field :date %>

希望有帮助=)

答案 2 :(得分:-1)

考虑使用select_date,而不是用户可以输入任何内容的简单文本字段。

<%= u.select_date(:date, :order => [:month, :day, :year]) %>

http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-select_date