我必须为某事选择日期和时间。我正在使用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]}")
这似乎真的很hacky,但我想不出另一种方法来做到这一点。从两个表单字段中获取数据然后合并并格式化它的更好方法是什么?我猜这是 before_save 的东西,但我不知道如何将它传递给以params
这种方式调用的方法。
任何建议表示赞赏。提前致谢!