0

在我看来,我有这个表格:

    <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

问题是输入这样的示例日期: 在此处输入图像描述

正在设置小时和分钟,但不设置日期:

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

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

4

2 回答 2

0

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

于 2013-02-09T20:42:57.467 回答
0

我已经弄清楚了,在我的视图中设置了 select_date 和 select_time 助手中的前缀属性,就像这样。

    <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
于 2013-02-09T21:43:52.940 回答