ブログの投稿と同時に子テーブルである、カテゴリーテーブルにレコードを追加したいです。
newアクションに子テーブルをbuild
する必要があると思いますが、
ruby
1@postit.postitcategory.build
とするとundefined method 'build' for nil:NilClass
エラーとなってしまいます。
build_xxx
という形にすると、
@postit.build_postitcategory
親テーブルには正常に追加されるのですが、子テーブルへの追加がされません。
デバッグしてみると、ストロングパラメータの段階でネストされていませんでした。何が原因だと思われるでしょうか?
教えていただけると助かります。
モデルの関係は Postit 1対多 Postitcategory
です。
コントローラ
ruby
1def new 2 @postit = Postit.new 3 @postit.build_postitcategory 4end 5 6private 7def postit_params 8 params.require(:postit).permit(:title, :name, :content, postitcategory_attributes:[:category]) 9end
##モデル
Postit
id | title | postitcategory_id | name | content |
---|---|---|---|---|
1 | テスト | 1 | 太郎 | 内容 |
2 | Railsについて | 2 | 太郎 | 内容 |
postit.rb
ruby
1class Postit < ApplicationRecord 2 belongs_to :postitcategory, optional: true 3 4 accepts_nested_attributes_for :postitcategory 5end
Postitcategory
id | category |
---|---|
1 | 日常 |
2 | 開発 |
postcategory.rb
ruby
1class Postitcategory < ApplicationRecord 2 has_many :postits 3end 4
View
ruby
1<div class="field"> 2 <%= fields_for(:postitcategory) do |c| %> 3 <%= c.label :category %> 4 <%= c.text_field :category %> 5 <% end %> 6</div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/30 13:30
2018/07/30 13:51