1

update_attributes と accept_nested_attributes_for を使用して、親 (場所) コントローラーからいくつかの子オブジェクト (days_events) を更新しようとしています。

params ハッシュではすべて問題ないように見えますが、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

これが私のparamsハッシュです:

{
"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 に答える