我正在尝试使用update_attributes和accepts_nested_attributes_for来更新父节点(位置)控制器中的某些子对象(days_events)。
params hash中的一切看起来都很好但是当我尝试使用assign_attributes或update_attributes时,实际日期不会更新。第一个days_event记录在数据库中成功创建,应该与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"
}
答案 0 :(得分:2)
检查日期格式,MySQL例如使用YYYY-MM-DD格式,如果输入的格式无效,它将拒绝它。
如果您想要标准化日期格式而不管输入的内容是什么,我建议您在模型中添加before_validation
钩子并在那里进行。检查this question上的答案是否有建议,它不处理日期(它显示如何格式化价格属性),但它应该让您知道您需要做什么。
如果您需要帮助格式化日期,请在此处发表评论,我会尽快与您联系。
希望有所帮助:)