Rails4でaccepts_nested_attributes_for, allow_destroy: true
Rails4でaccepts_nested_attributes_for, allow_destroy: true なフォームつくっててハマった。
モデルの構成が、
Author has_one Book
だとして、Strong Parameters を以下のようにする。
params.require(:author).permit([ book_attributes:[:title, :price]])
ほいで、フォーム経由でBookを削除したい時、削除できない。
サーバーのメッセージを見ると、
Unpermitted parameters :_destroy, :id
とある。
むむっと思ってその2つを足してみた。
params.require(:author).permit([ book_attributes:[:title, :price, :_destroy, :id]])
これで、フォームからBookモデルを削除できるようになった。
しかし、_destroyを追加しないといけないのは何となくわかるものの、
(てかこれも、 allow_destroy: true で勝手にやってくれるもんだと思ってた。)
:idを渡さないといけないのは何でなんだろう。
#参考
http://stackoverflow.com/questions/18308714/nested-fields-and-strong-parameters