更新datetime属性

时间:2013-05-31 19:47:21

标签: ruby-on-rails datetime

我想使用表单上的两个元素更新datetime属性:text_field和time_select。这将使用户能够使用datepicker(jquery ui)和使用下拉菜单的时间来选择日期:

enter image description here

但是,当我尝试更新更新表单时,出现以下错误:

ActiveRecord::MultiparameterAssignmentErrors in StepsController#update

1 error(s) on assignment of multiparameter attributes

Parameters:

{"utf8"=>"✓",
 "_method"=>"put",
 "authenticity_token"=>"FxFbv9OFzCiYjNknZKUtwyAXR99uuOvy8uplv1cKaZE=",
 "step"=>{"description"=>"<p>Project description</p>\r\n",
 "published_on"=>"05/30/2013",
 "published_on(4i)"=>"15",
 "published_on(5i)"=>"19"},
 "commit"=>"Update Step",
 "project_id"=>"92",
 "id"=>"0"}

如何将text_field和time_select中的参数合并到一个日期时间?

这是我的表格:

<%= f.text_field :published_on, :value=> (@step.published_on.strftime("%m/%d/%Y")) %>  at <%= f.time_select :published_on, :class=>"btn dropdown-toggle", :ampm=> true, :ignore_date=>true %>

1 个答案:

答案 0 :(得分:0)

这是ViewModels可能有用的场景,但进入它会有点过分。

因此,我想到的最佳选择是在客户端合并值,或者在服务器端合并值,然后在params变量构建对象之前合并值。

在服务器端,可以使用动作控制器过滤器实现:
before_filter :merge_somefileds!, only: [:edit]

更多信息:http://guides.rubyonrails.org/action_controller_overview.html#filters