Używam bootstrap3-datetimepicker-rails gem, aby umożliwić użytkownikom przechowywanie scheduled_date
o WorkOrder
w mojej aplikacji (mienia A 'datetime'), ale dostaję błąd argument out of range
kiedy użytkownik przesyła formularz, aby utworzyć WorkOrder
, a data różni się znacznie od tej, która została wybrana za każdym razem, gdy użytkownik otworzy ekran edycji. Zabawne jest to, że kiedyś działało, ale nie wiem, jaki kod mógł się zmienić, by go złamać.Argument poza zakresem Rails 4 i bootstrap3-DateTimePicker szyn
dodałem wymaganych zależności & dołączone odpowiednie wytyczne w moich plikach CSS/JS:
gem 'momentjs-rails', '~> 2.5.0'
gem 'bootstrap3-datetimepicker-rails', '~> 3.0.0'
O ile mogę powiedzieć, mój kod wygląda identycznie jak na przykład w dokumentacji. Oto fragment mojego formularza:
<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 (zapomniałem dodać kod Controller - super proste):
work_orders_controller.rb
def create
@work_order = WorkOrder.new(work_order_params)
... [it errors on the line above]
end
A mój parametr whitelist:
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
A przykładowy parametr s, które dają błąd argument out of range
kiedy zapisać formularz:
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"=>""}}
Taki sam jak moi customers_controller.rb
gdzie mam zagnieżdżonego formularza dla WorkOrder
wewnątrz nowej formie klienta (wszystko inne w tej formie działa idealnie):
def create
@customer = Customer.new(customer_params)
... [errors above]
end
Data i godzina są zapisywane poprawnie, jeśli upłyną w ciągu 24 godzin, ale nawet jeśli zapisano poprawnie, data wyświetla się zupełnie dziwacznie i niesformatowana w polu tekstowym, kiedy zaczynam edytować WorkOrder
. Na przykład:
Kiedy wybrać datę z wyboru daty: 05/06/2014 10:28 AM
Kiedy edytować WorkOrder
: 2014-06-05 10:28:00.000000
pomysłów? Jakiekolwiek preferencje dotyczące tego, czy powinienem wykonać to pole jako Date
, lub (obecnie)? W tej chwili pracujemy w centralnej strefie czasowej, ale nie zawsze tak będzie.
Z góry dziękuję za wskazanie mnie we właściwym kierunku!
gdzie jesteś uzyskiwanie błąd? w kontrolerze? gdzie jest kod kontrolera? –
@UriAgassi: Dodano kod kontrolera zgodnie z żądaniem. To nie jest problem z moją metodą silnego parametru białej listy w moim kontrolerze, więc nie uwzględniłem tej metody. –
Pomóż nam pomóc! Jeśli wiesz, że błąd występuje w pierwszym wierszu, nie sądzisz, że wartości _values_ 'customer_params' i' work_order_params' są istotne –