我刚刚升级到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变量。我不更改日期时格式相同。当我不改变它,它的工作原理。 奇怪..
答案 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