0

私は、次のしているモデル「accepts_nested_attributes_for」が機能していないのはなぜですか?

注文

class Order < ApplicationRecord 
     has_many :items 
     accepts_nested_attributes_for :items 
    end 

とItem

class Item < ApplicationRecord 


belongs_to :order 

end 

そして、私は注文が複数のアイテム

{ 
    "location": "takeAway", 
    "status": "preparing", 
    "items": [ 
    { 
     "id":2, 
     "name": "coffee", 
     "quantity": 1, 
     "milk": "whole", 
     "size": "small" 
    } 
    ] 
} 

そして、私は持っているが含まれている場所を解析するためにJSONを以下しています私のコントローラのコードに従ってください。

params.require(:order).permit(:location, :status, items_attributes: [:id, :name, :quantity, :milk, :size]) 

注文記録をアイテムレコードに保存できないのはなぜですか?誰かが助けてくれますか?

+0

item_attributesにidを送るべきではないと思いますが、どういうエラーが表示されますか?あなたは共有していただけますか? –

+0

[documentation?](http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html) –

+0

アイテムテーブルに作成されたレコードが表示されません –

答えて

1

私は、パラメータitemsを受け取りましたが、items_attributesを許可していることが問題だと思います。 itemsの代わりにitems_attributesをparamsで受信するようにしてください。それだけで、自動的に属性をitemsレコードに割り当てます。

だから、あなたの最終paramsハッシュは、次のようになります。

{ 
     "location": "takeAway", 
     "status": "preparing", 
     "items_attributes": [ 
     { 
      "id":2, 
      "name": "coffee", 
      "quantity": 1, 
      "milk": "whole", 
      "size": "small" 
     } 
     ] 
    } 

あなたがのparamsでitemsキーを保持したい場合は、Itemは、コントローラの中で自分自身をオブジェクトを構築する必要があります。

+0

アイテムレコードが作成されていません。あなたは助けてもらえますか? –

+0

私の提案のどの部分を試してみましたか? –

+0

あなたの 'Order'モデルに' attr_accessible:items_attributes'を追加してみてください。 –

関連する問題