我在rails 4.0.9項目中使用了bootstrap-datepicker-rails(v.1.3.0.2),並在開發和生產中看到了一些奇怪的行爲,如標題所解釋的。我已經看過this question,但看起來我的問題與OP的不同,並且更奇怪。爲什麼我的日期超出了某些日期的範圍,但不是其他日期?
和他一樣,我發現了一個argument out of range
錯誤,當我提出我的形式(無論是對於create
動作或動作update
),但僅限於某些日期,而不是爲別人。
例如,這個日期是超出範圍(複製從我的開發日誌 - 從發送到控制器的參數片段):
"date_received"=>"08/28/2014"
然而,這個日期是確定:
"date_received"=>"08/07/2014"
我認爲一些日期選擇保存正確的規則排除了格式問題。我很難理解這會如何發生。在08/13/2014之前的任何日期都有效,並且之後的任何日期都會返回超出範圍的錯誤。
這裏是醜陋的細節:
的application.js:
//= require jquery
//= require jquery.turbolinks
//= require jquery.tablesorter
//= require jquery_ujs
//= require bootstrap
//= require bootstrap-datepicker/core
//= require jquery-ui
//= require turbolinks
application.css:
*= require jquery-ui/theme
*= require bootstrap-datepicker
*= require font-awesome
*= require custom
*= require theme.blue
*= require_self
jobs.js.coffee:
$(document).ready ->
$ ->
$(".tablesorter").tablesorter({sortList: [[2,0]]})
$('.datepicker').datepicker()
return
工作。 rb:
(驗證所討論的字段):
validates :date_received, presence: true
jobs_controller.rb:
(行上發生錯誤):
if @job.update_attributes(job_params)
job_params定義:
def job_params
params.require(:job).permit(:number, :name, :display_name, :date_received, :market,
:job_type, :pose_selection, :pose_selection_label, :pose_selection_deadline,
:pk_id, :pk, :flyout_id, :flyouts, :code, :tax_rate, :shipping_handling, :mail_home,
:mail_home_amount, :line, :notes, :entered, :entered_by, :verified, :verified_by,
:printed, :printed_by, :assembled_by, :shipped, :active, :discount_amount, :data)
end
我該從哪裏出發t解決這個問題?
日期格式問題?它是否假設爲dd/mm/yy?你有沒有試過20/08/14,這是考慮範圍? – SteveTurczyn 2014-08-29 21:11:06
我剛剛在手動輸入日期而不是通過日期選擇器來挑選日期。如果我輸入日期「20140828」,它在範圍內。 「20140807」也是如此。仍然不明白它是如何通過datepicker錯誤的。 – digijim 2014-08-29 21:13:39
它變得更加怪異。從datepicker工作中選擇的2014年9月開始的日期也可以。所以只是從2014年8月13日到2014年8月31日的日期失敗。我嘗試過的所有其他日期都有效。我需要一杯飲料。 – digijim 2014-08-29 21:40:04