【发布时间】:2013-03-12 21:44:05
【问题描述】:
我正在尝试使用 update_attributes 和 accept_nested_attributes_for 从父(位置)控制器更新一些子对象(days_events)。
params hash 中的一切看起来都不错,但是当我尝试使用 assign_attributes 或 update_attributes 时,实际日期没有得到更新。第一天的事件记录在数据库中成功创建,因为它应该使用 event_id 和 location_id 但 start_date 和 end_date字段为空。
日期字段也没有任何型号限制。
这是我的位置(父)控制器中的代码:
def update
logger.debug('PARAMS HASH********'+params.to_s)
@total_forms=params[:total_forms].to_i
@current_form=params[:current_form].to_i
@location = Location.find(params[:id])
@location.update_attributes(params[:location])
end
这是我的参数哈希:
{
"utf8"=>"Γ£ô",
"_method"=>"put",
"authenticity_token"=>"Mz2GzRmqxrygy01d2LdkE6ZZY+fJK1PSlVhFKlVUme8=",
"location"=>{
days_events_attributes"
=>{
"0"=>{
"start_date"=>"03/14/2013",
"end_date"=>"03/14/2013",
"_destroy"=>"false",
"event_id"=>"588"
}, "
1"=>{"
start_date"=>"",
"end_date"=>"",
"_destroy"=>"1",
"event_id"=>"588"
},
"2"=>{
"start_date"=>"",
"end_date"=>"",
"_destroy"=>"1",
"event_id"=>"588"
}
}
},
"total_forms"=>"2",
"current_form"=>"0",
"commit"=>"Add Date s for Next Location",
"action"=>"update",
"controller"=>"locations",
"id"=>"871"
}
【问题讨论】:
-
您使用的是哪个数据库?检查日期格式,例如 MySQL 使用 YYYY-MM-DD 格式,如果您输入的格式无效,它将直接拒绝。
-
你能发布关系和嵌套属性的模型代码吗?
-
看看你的 attr_accessible
-
当您尝试运行更新时会很高兴看到控制台日志
-
@sergelerator 做到了。它是一个 mysql 数据库,它不喜欢日期格式,它拒绝 2013 年 3 月 14 日的日期,但如果我尝试输入 2013 年 4 月 4 日,则交换日期和月份并不重要,而且一切正常。将其切换为答案并将其标记为已解决。谢谢大家!
标签: ruby-on-rails nested-attributes