Я использую bootstrap3-datetimepicker-rails gem, чтобы пользователи сохраняли scheduled_date
WorkOrder
в моем приложении (a ' DateTime '), но я получаю ошибку argument out of range
, когда пользователь отправляет форму для создания WorkOrder
, а дата очень отличается от того, что было выбрано, когда пользователь открывает экран редактирования. Самое забавное, что он работал, но я не знаю, какой код мог измениться, чтобы сломать его.
Я добавил необходимые зависимости и включил правильные директивы в свои файлы CSS/JS:
gem 'momentjs-rails', '~> 2.5.0'
gem 'bootstrap3-datetimepicker-rails', '~> 3.0.0'
Насколько я могу судить, мой код похож на пример в документации. Вот фрагмент моей формы:
<div class="row">
<div class="col-md-4">
<div class="form-group">
<%= f.label :scheduled_date %>
<div class='input-group date'>
<span class="input-group-addon"><span class="fa fa-calendar"></span></span>
<%= f.text_field :scheduled_date, class: 'form-control input-lg', id: "service_date_picker" %>
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(function () {
$('#service_date_picker').datetimepicker({
icons: {
time: "fa fa-clock-o",
date: "fa fa-calendar",
up: "fa fa-arrow-up",
down: "fa fa-arrow-down"
}
});
});
</script>
EDIT (забыл добавить код контроллера - очень просто):
work_orders_controller.rb
def create
@work_order = WorkOrder.new(work_order_params)
... [it errors on the line above]
end
И мой белый список параметров:
def work_order_params
params.require(:work_order).permit(:caller_name, :brief_job_details, :contract_price, :quoted_by, :job_description, :scheduled_date, :time_materials_details, :sheduled_time, :contact_name, :payment_method, :notes, :customer_id, :job_site_id)
end
И пример параметров, которые дают ошибку argument out of range
при сохранении формы:
work_orders_attributes"=>{"0"=>{"caller_name"=>"Justin", "time_materials_details"=>"", "contract_price"=>"", "quoted_by"=>"", "payment_method"=>"", "job_description"=>"", "scheduled_date"=>"05/23/2014 1:28 PM", "notes"=>""}}
То же, что и my customers_controller.rb
, где у меня есть вложенная форма для WorkOrder
внутри новой клиентской формы (все остальное в этой форме работает отлично):
def create
@customer = Customer.new(customer_params)
... [errors above]
end
Дата и время сохраняются правильно, если они находятся в течение 24 часов, но даже если они сохраняются правильно, дата отображается полностью странно и неформатируется в текстовом поле, когда я перехожу к редактированию этого WorkOrder
. Например:
Когда я выбираю дату из выбора даты: 05/06/2014 10:28 AM
Когда я редактирую WorkOrder
: 2014-06-05 10:28:00.000000
Любые идеи? Любые предпочтения в том, следует ли мне создать это поле a Date
, Time
или DateTime
(в настоящее время)? Сейчас мы работаем в Центральном часовом поясе, но это не всегда так.
Спасибо заранее за то, что указали мне в правильном направлении!