6

Carrierwave を使用するアプリケーションを Rails 4 に移植していますが、強力なパラメーターに問題があります。私はモデルを持っています

accepts_nested_attributes_for :photos

アップロードされた画像が渡される方法は次のとおりです。

{
    # ...
    "model"=>
    {
        # ...
        "photos_attributes"=>
        {
            "1362752177921"=>
            {
                "image"=>"test.jpg",
            }
        }
    }
}

しかし、私は受け入れるパラメータを書く方法を理解できないようですphotos_attributes.

私は試しましたが、保存する前に作成され.permit(photos_attributes: [])た を使用すると、SQLに表示されず、これが2番目の問題です。permit!uuid

photos.uuid may not be NULL: INSERT INTO "photos" ("created_at", "model_id", "image", "title", "updated_at") VALUES (?, ?, ?, ?, ?)

ここには強力なパラメーターのドキュメントが不足しており、続行する方法もわかりません。

更新 これは、ネストされた属性で機能しました:

params.permit( ..., :photos_attributes => ['id', 'title', 'image', '_destroy'])

ただし、Rails 4 用に Carrierwave または Nested Form を最初に更新する必要があるようです。常に空の画像を保存しようとします。Rails 3 でも同じコード (strong_params なし) が機能します。

4

1 に答える 1

1

これはネストされた属性で機能しました:

params.permit( ..., :photos_attributes => ['id', 'title', 'image', '_destroy'])

ただし、Rails 4 用に Carrierwave または Nested Form を最初に更新する必要があるようです。空の画像を常に保存しようとしますが、:reject_ifこれは.

于 2013-05-10T05:48:17.703 に答える