【发布时间】:2018-05-16 07:07:36
【问题描述】:
我正在尝试在 Ruby on Rails 5.2 应用程序上以表单形式使用 Tempus Dominus Bootstrap 4,以便用户可以选择日期。代码如下:
app/views/events/_form.html.erb
<div class='form-group'>
<%= f.label :starts_at, 'Start Date and Time', class: 'control-label' %>
<div class="input-group date" id="datetimepicker1" data-target-input="nearest">
<%= f.text_field(:starts_at, class: "form-control datetimepicker-input", data: {target:"#datetimepicker1"}) %>
<div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
<div class="input-group-text"><i class="fas fa-calendar-plus"></i></div>
</div>
</div>
</div>
app/assets/javascripts/events.js
$(function () {
$('#datetimepicker1').datetimepicker();
});
app/controllers/events_controller.rb
def create
@event = Event.new(event_params)
@event.user = current_user
if @event.save
redirect_to @event, notice: 'Event was successfully created.'
else
render :new
end
end
我想先提交月份格式。当我选择一个日期 2018 年 6 月 9 日并提交表单时,它会将其保存到数据库中,月份和日期相反:2018 年 9 月 6 日。当我在提交表单后查看 params 时,格式为 @ 987654325@ 月份在前,但 Ruby/Rails 将其转换为日期时间对象,假设日期在前。
在将月份转换为日期对象时,如何告诉 Ruby 月份是第一个?我可以在保存之前在控制器中做一些事情吗?
【问题讨论】:
-
你能控制日期时间选择器使用的格式吗?当您使用非模棱两可的 ISO8601 格式时,事情往往会变得更顺利。
-
我认为是这样,但它不在基本文档中。涉及两个库的事实使情况变得复杂。处理日期格式的 Moment.js 和创建日期选择器的 Tempus Dominus Bootstrap 4。
-
我想出了如何做到这一点并将其添加为单独的答案。
标签: ruby-on-rails ruby date tempus-dominus-datetimepicker