从select_date和select_time获取并在控制器中构建日期

时间:2013-02-09 20:22:19

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我认为我有这个表格:

    <tr>
      <td>Date</td>
      <td>
        <%= select_date(@min_date, { :order => [:day, :month, :year], start_year: @start_year, end_year: @end_year }, style: "width: auto;") %>
      </td>
    </tr>
    <tr>
      <td>Time</td>
      <td>
        <%= select_time(@min_date, {}, style: "width: auto;") %>
      </td>
    </tr>

我正在我的控制器中得到它:

unless params[:date].nil?
  params[:event][:date] = DateTime.new(
    params[:date][:year].to_i, params[:date][:month].to_i,
    params[:date][:day].to_i, params[:date][:hour].to_i,
    params[:date][:minute].to_i, 0
  )
end

问题是输入这样的示例日期: enter image description here

设置小时和分钟而不是日期:

(rdb:369) pp date
Sat, 09 Feb 2013 16:37:00 UTC +00:00

我不知道我错过了什么...我很感激任何帮助

2 个答案:

答案 0 :(得分:0)

您不必在控制器中执行此操作。如果这是数据库中的日期时间字段,则rails将自动执行所有这些操作。从数据库中获取格式时可以更改格式。

答案 1 :(得分:0)

我已经明白了,在我的视图中在select_date和select_time助手中设置了prefix属性,就像这样。

    <tr>
      <td>Date</td>
      <td>
        <%= select_date(@min_date, { :prefix => "date", :order => [:day, :month, :year], start_year: @start_year, end_year: @end_year }, style: "width: auto;") %>
      </td>
    </tr>
    <tr>
      <td>Time</td>
      <td>
        <%= select_time(@min_date, { :prefix => "time" }, style: "width: auto;") %>
      </td>
    </tr>

建立日期,如下:

unless params[:date].nil?
  params[:event][:date] = DateTime.new(
    params[:date][:year].to_i, params[:date][:month].to_i,
    params[:date][:day].to_i, params[:time][:hour].to_i,
    params[:time][:minute].to_i, 0
  )
end