2011-08-24 55 views
19

當我提交我的表單時,我可以看到在帖子中發送的日期。但是,它不保存日期。如果我做了日期檢查,表示它的格式不正確。這裏是我的日期選擇器功能,它顯示罰款:Rails 3 jquery日期選擇器日期不保存到數據庫

$j(function(){ 
    $j("#mile_date").datepicker(); 
}); 

的$ j是因爲我使用的原型,以及因此所有的jQuery呼叫使用的noconflict變量。

下面是帖子:

Parameters: {"utf8"=>"Γ£ô", "authenticity_token"=>"Fj4HW/B4EOan/vcPZLJ75TvWkRH4ZKSFsPLlQLSD0cI=", "mile"=>{"odometer"=>"", "trip"=>"428.2 
", "gallons"=>"24.959", "note"=>"", "temperature"=>"", "date"=>"06/22/2011"}, "commit"=>"Create Mile"} 

所以它發出的日期罰款,但軌道似乎並不喜歡的格式。它向數據庫中插入一個空值。如果我用它發送這和下拉菜單中默認的DateField提交保存罰款:

Parameters: {"utf8"=>"Γ£ô", "authenticity_token"=>"Fj4HW/B4EOan/vcPZLJ75TvWkRH4ZKSFsPLlQLSD0cI=", "mile"=>{"odometer"=>"", "trip"=>"428.2 
", "gallons"=>"24.959", "mpg"=>"17.156136063144", "note"=>"", "temperature"=>"", "date(1i)"=>"2011", "date(2i)"=>"6", "date(3i)"=>"22"}, "c 
ommit"=>"Create Mile"} 

在INSERT語句中它插入日期爲:'2011-06-22'

不滑軌預計3個變量的日期正確構建日期格式?如何讓日期選擇器發送正確的日期格式?

謝謝你在前進,

回答

36

我碰到了同樣的問題。一種解決方案是簡單地改變了日期選擇器使用以下格式:

// in your javascript... 
$j(function(){ 
    $j("#mile_date").datepicker({ 
    dateFormat: "yy-mm-dd" 
    }); 
}); 

的Rails似乎能夠處理YY-MM-DD格式 - 我使用時遇到任何問題保存日期到數據庫。這裏唯一的問題是,有些人可能會發現yy-mm-dd的格式比mm/dd/yyyy好一點。

+0

謝謝,僅此而已。 – Xaxum

+2

發佈了一個解決方案,用戶可以看到一種方式,並用hidden_​​field提交適當的格式。再次感謝指出原來的問題,因爲我在別處看到rails會轉換日期。 – Xaxum

+0

只適用於在同一問題中運行的人,參數的名稱是'format'而不是'dateFormat'了 – Viro

20

正如上面的rails上的@BaronVonBraun所指出的,似乎並不處理這種格式。改變它,因爲他建議工作。但是,對於那些想要與yy-mm-dd格式不同的用戶,可以使用以下內容。當rails獲得所需的格式時,用戶會看到你想要的格式。

$j(function(){ 
    $j("#show_date").datepicker({altField: '#mile_date', altFormat: 'yy-mm-dd'}); 
}); 

的SHOW_DATE是他們看到現場的id和mile_date與日期Rails需要的隱藏字段。

這是documentation

0
j('.jquery-calendar').datepicker().each(function(){ 
    // convert dates from db to US format 
    var $input = j(this) 
    var found = $input.val().match(/^(\d{4})-(\d{2})-(\d{2})$/); 
    if(found){ 
    $input.val(found[2]+'/'+found[3]+'/'+found[1]); 
    } 
}); 
1

如果有人使用jquery_datepicker gem,你要使用類似下面的代碼的東西在你的軌道查看。

<%= form.hidden_field(:ship_date, :id => "ship_date") %> 
<%= datepicker_input(:show_date, item.id, :size => 10, altField: "#ship_date", altFormat: 'yy-mm-dd', :value => item.ship_date.strftime("%m/%d/%Y"))%> 

您還可以使用form.datepicker_input直接連接的日期選擇器的形式,但在我的使用情況下,我想日期選取器,以反映本地化的日期,它的Rails不會接受。所以我添加了一個隱藏的表單元素併爲其設置備用字段,完美地工作!

0

還挺哈克但做幫手直組的事情,當我知道我給服務器日期在MM-DD-YY格式

def convert_to_y_m_d(date) 
    new_date = date.split("-")[2] + "-" + date.split("-")[0] + "-" + date.split("-")[1] 
    new_date 
end