2011-07-21 24 views
1

我的問題與another one類似,將有關將text_field的數據放入日期時間列的問題。看起來我需要按照特定順序將數據放入text_field中,否則rails將不會接受它。事情是,我不能總是控制用戶如何輸入數據。實際上,由於我剛添加了JQuery日期選擇器,用戶放入的值幾乎總是錯誤的。rails:使用text_field中的值設置日期時間列

我想我可以使用Date.parse或Time.parse或DateTime.parse以及一個setter方法(在railscast 32中提到,但似乎並沒有爲我工作)我一直得到一個參數超出範圍錯誤也似乎是由於輸入的格式錯誤導致的。

是否有其他人使用JQuery日期選擇器來填寫日期的文本字段?您必須添加什麼魔法才能將模型或控制器添加到您的模型或控制器中讓它工作嗎?爲什麼這麼難?

回答

0

我用timeliness寶石來克服這個問題,並以我想要的格式提交日期。除了及時性外,我還用來驗證日期和時間,也就是說它不會在將來或任何事情上。

解析字符串「MM/DD/YYYY」使用及時性的寶石,你會做:

Timeliness.parse(params[:my_date], :format => 'mm/dd/yyyy') 
0

時間和日期解析器在他們接受各種格式時,無法找出你通過的任何時間段,不管怎樣,如果你超出範圍錯誤rs,這意味着你使用的格式是無效的。

您可以控制jQuery Datepicker使用的格式,並選擇時間解析器不會錯誤的格式。默認的MM/DD/YYYY應該很好地思考,你傳遞了什麼格式?

+0

我試圖通過MM/DD/YYYY但軌道將只接受DD/MM/YYYY –

+0

例如,如果我進入軌道控制檯,然後輸入Date.parse( 「25/07/2011」)我收到了有效的答覆。但是如果我輸入Date.parse(「7/25/2011」),我會得到一個超出範圍錯誤的參數。 –

+0

什麼版本的Rails?我只是嘗試3.0.7和'Date.parse(「7/25/2011」)'爲我返回一個有效的日期。你總是可以通過'dateFormat:「DD/MM/YYYY」'來修改datepickers格式(參見原始答案中的鏈接),並確保它始終創建一個在Rails中對你有效的日期格式。 –

0

如果你切換保存對象之前的月份和日期字段?你可以用jquery/javascript做一個onsubmit事情,或者只是使用一個date_select_tag,並在保存對象之前按照你認爲合適的方式移動參數。

除此之外,日期格式可能會有一個rails默認設置。不知道您是否希望儘快更改整個應用程序的日期格式。

0

問題是rails/activerecord期望日期採用ISO格式'yyyy-mm-dd'。但是,這不是一個用戶友好的格式

在我看來,最簡單的解決方案是使用的日期選擇器alt屬性 - 基本上,顯示的日期格式,但提交另一份日期格式:

= f.text_field :your_date, id: "your_date", class: "hidden" // This is hidden 
    // This will show up 
    = text_field_tag "date[something_we_will_not_use]", f.object.your_date.strftime("%m/%d/%Y"), 
    class: "datepicker", 'data-alt-field' => '#your_date' 

日期選擇器初始化

$('.datepicker').each(function() { 

     var alt_field = $(this).attr('data-alt-field'); 

     $this.datepicker({ 
     dateFormat: "mm/dd/yy", 
     prevText: '<i class="fa fa-chevron-left"></i>', 
     nextText: '<i class="fa fa-chevron-right"></i>', 
     altField: alt_field, // This is the tag where the date will be filled 
     altFormat: "yy/mm/dd" // This is how the date will be posted to your controller 
     }); 
    }) 
相關問題