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

このように、ビューの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
于 2013-02-09T21:43:52.940 に答える
0

コントローラでこれを行う必要はありません。これがデータベースの日時フィールドである場合、レールはこれらすべてを自動的に行います。データベースから取得するときに、形式を変更できます。

于 2013-02-09T20:42:57.467 に答える