在text_field rails 3.2.1中设置日期

时间:2012-03-08 22:51:31

标签: ruby-on-rails jquery-ui datetime

我刚刚升级到rails 3.2.1。

我使用jQuery UI datepicker在rails text_fields中设置日期。该字段在数据库中设置日期列。

但是,现在它不起作用。

我在视图中有这个代码。

<%= p.text_field :due, :value => Time.now.strftime("%m/%d/%Y"), :id => "dialog_project_date" %>

如果我不改变日期一切顺利。如果我更改Rails将nil放在数据库中的日期。当我禁用jQuery datepicker并手动输入日期(使用正确的格式)时,也会发生这种情况。

在我看来,rails处理日期字段的格式有一些方法。

我找不到解决方案。有人有想法吗?

更新

我在create action中使用了调试器。这是otuput

 (rdb:22) params
 {"utf8"=>"✓", "authenticity_token"=>"4IChBeyKzkc4dwzje1RMPy2GBTMs5m2zrBPBFbIIKJw=",         "project"=>{"name"=>"gunnaer", "description"=>"", "due"=>"03/17/2012", "customer_id"=>""},     "commit"=>"Save", "controller"=>"projects", "action"=>"create_index"}
 (rdb:22) @project
 #<Project id: nil, name: "gunnaer", description: "", due: nil, active: true, budget:   nil, hour_price: nil, firm_id: 1, customer_id: nil, created_at: nil, updated_at: nil>
 (rdb:22) @project.due = "03/17/2012"
 "03/17/2012"
 (rdb:22) @project
 #<Project id: nil, name: "gunnaer", description: "", due: nil, active: true, budget:  nil, hour_price: nil, firm_id: 1, customer_id: nil, created_at: nil, updated_at: nil>

params是正确的,但是到期的param没有设置为instans变量。我不更改日期时格式相同。当我不改变它,它的工作原理。 奇怪..

2 个答案:

答案 0 :(得分:2)

您的日期格式错误。尝试使用“yyyy / mm / dd”

这有效:

ruby-1.9.2-p290 :002 > b = Blog.first
 => #<Blog id: 1, title: "Something", created_at: "2012-03-09 13:38:23", updated_at: "2012-03-09 13:38:32"> 
ruby-1.9.2-p290 :003 > b.created_at
 => Fri, 09 Mar 2012 13:38:23 UTC +00:00 
ruby-1.9.2-p290 :004 > b.created_at = "2012/03/17"
 => "2012/03/17" 
ruby-1.9.2-p290 :005 > b.save
 => true 
ruby-1.9.2-p290 :006 > Blog.first
 => #<Blog id: 1, title: "Something", created_at: "2012-03-17 00:00:00", updated_at: "2012-03-09 13:58:55"> 

这不是:

ruby-1.9.2-p290 :007 > b.created_at = "03/17/2012"
 => "03/17/2012" 
ruby-1.9.2-p290 :008 > b.save
 => true 
ruby-1.9.2-p290 :009 > Blog.first
 => #<Blog id: 1, title: "Something", created_at: nil, updated_at: "2012-03-09 13:59:22"> 

修改

您有几个日期格式选项,您应该在jquery ui代码中指定。请参阅此链接以获取示例 - http://jqueryui.com/demos/datepicker/date-formats.html

答案 1 :(得分:0)

要进行调试,首先要查看正在向控制器发布的值。检查日志或使用调试代理,如小提琴。

然后使用Rails控制台隔离问题发生的位置。

<强>已更新

问题是最新版本的Ruby(不是Rails)假设是欧洲日期格式。解决方法仍然使用US format