これまでに作った機能について簡単にまとめていく。

今回は、

子モデルのフォームの動的追加

前提条件

親モデルと子モデルを同時に作成・更新できること
まだの方はこちら

使用モデル

Blogモデル

カラム データ型
1 title string
2 content text

Articleモデル(アソシエーションは記事中で追加)

カラム データ型
1 title string
2 content text
3 blog_id bigint

Gemの導入

gem "nested_form"
gem 'jquery-rails'

bundle installの実行

nested_formの読み込み

app/assets/javascripts/application.js

//= require jquery_nested_form

フォームの変更

app/views/blogs/_form.html.erb

<%= nested_form_for(blog) do |f| %>
  
  <div class=“blog_form">
    <%= f.label :itle %>
    <%= f.text_field :title %>

    <%= f.label :content %>
    <%= f.text_field :content %>
  </div>

  <div class=“article_form">
    <%= f.fields_for :articles do |article| %>
   
      <%= article.label :title %>
      <%= article.text_field :title %>

      <%= article.label :content %>
      <%= article.text_field :content %>

      # 以下1行を追加
      <%= f.link_to_add :記事を追加, :articles %>

    <% end %>
  </div>

  <div class="action">
    <%= f.submit %>
  </div>

<% end %>

フォームを削除する場合は、以下を追加

link_to_remove

以上で作成完了