何かのために日付と時刻を選択する必要があります。私は を使用しており、と宝石を使用simple_form
した twitter ブートストラップを使用しています。datepicker
timepicker
まず、フォーム ジェネレーターを十分にカスタマイズして、すべてを機能させることができませんでした。
<div class="control-group string optional">
<label class="string optional control-label" for="publish_day">Publish Date</label>
<div class="controls">
<div class="input-append date" id="publish_date" data-date="<%= @press_release.published_day %>" data-date-format="dd-mm-yyyy">
<input class="span2" type="text" name="press_release[publish_day]" value="<%= @press_release.published_day %>" readonly>
<span class="add-on"><i class="icon-calendar"></i></span>
</div>
</div>
</div>
<div class="control-group string optional">
<label class="string optional control-label" for="publish_time">Publish Time</label>
<div class="controls">
<div class="input-append bootstrap-timepicker-component date">
<input class="span2" id="publish_time" name="press_release[publish_time]" type="text" readonly>
<span class="add-on"><i class="icon-time"></i></span>
</div>
</div>
</div>
これは不自由で、おそらく「正しい」わけではありませんが、simple_form をカスタマイズしてそれを実現するのに十分な方法がわかりません。
次に、フィールドを結合してデータベースに追加するには、コントローラーで次のことを行います。
params[:press_release][:publish_date] = Time.parse("#{params[:press_release][:publish_day]} #{params[:press_release][:publish_time]}")
これは本当にハックなようですが、別の方法がわかりません。2 つのフォーム フィールドからデータを取得し、それを組み合わせてフォーマットするより良い方法は何ですか? 私はそれがbefore_saveで何かだと推測していますが、params
そのように呼び出されたメソッドに渡す方法がわかりません。
任意の提案をいただければ幸いです。前もって感謝します!