Rails 3 jquery日期选择器日期未保存到数据库

Xax*_*xum 19 jquery-ui-datepicker ruby-on-rails-3

当我提交表单时,我可以在帖子中看到发送日期.但是,它不保存日期.如果我做一个日期检查,它说它的格式不正确.这是我的日期选择器功能,它显示正常:

    $j(function(){
    $j("#mile_date").datepicker();
});
Run Code Online (Sandbox Code Playgroud)

$ 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"}
Run Code Online (Sandbox Code Playgroud)

所以它发送日期很好,但rails似乎不喜欢格式.它将空值插入数据库.如果我使用带有下拉列表的默认日期字段提交它,它会发送此信息并保存正常:

    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"}
Run Code Online (Sandbox Code Playgroud)

在insert语句中,它将日期插入为:'2011-06-22'

Rails是否期望3个变量中的日期正确构造日期格式?如何让datepicker发送正确的日期格式?

先感谢您,

Bar*_*aun 37

我遇到了同样的问题.一种解决方案是简单地更改datepicker使用的格式:

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

Rails似乎能够处理yy-mm-dd格式 - 我正在使用它并且没有将日期保存到数据库的问题.这里唯一的问题是有些人可能会发现yy-mm-dd格式看起来不如mm/dd/yyyy ......

  • 发布一个解决方案,用户看到一种方式,并使用hidden_​​field提交正确的格式.再次感谢指向原始问题,因为我在其他地方看到rails会转换日期. (2认同)

Xax*_*xum 20

正如@BaronVonBraun所指出的那样,rails似乎没有处理这种格式.按照他的建议改变它.但是,对于那些想要与yy-mm-dd不同的格式的人,可以使用以下内容.当rails获得所需的格式时,用户会看到您想要的格式.

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

show_date是他们看到的字段的id,mile_date是带有日期rails需要的隐藏字段.

这是文档.