1

我正在尝试使用 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"
}
4

1 回答 1

2

检查日期格式,例如 MySQL 使用 YYYY-MM-DD 格式,如果您输入的格式无效,它将直接拒绝它。

如果您想规范化日期格式而不管您得到什么作为输入,我建议before_validation在您的模型中添加一个钩子并在那里执行。检查这个问题的答案以获得建议,它不处理日期(它显示如何格式化价格属性),但它应该让您了解您需要做什么。

如果您需要帮助格式化日期,请在此处发表评论,我会尽快处理。

希望能帮助到你 :)

于 2013-03-12T23:24:51.830 回答