質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

699閲覧

[Rails5]cocoonを利用したネストフォームを配列要素の件数分表示させたい

uw9623

総合スコア16

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/04/09 08:09

編集2022/01/12 10:55

前提・実現したいこと

gem cocoon を利用して、親子関係のテーブルに複数のデータを同時更新するformを作成する際に、
マスタデータとして登録してあるデータを取得し、その件数分入力欄を出力させたいと思っております。

発生している問題

viewファイル内で

<thead> <tr> <th>th要素</th> <th>th要素</th> <th>th要素</th> <th>th要素</th> <th>th要素</th> <tr> </thead> <tbody> <% @master_items.each do |master_item| %> <%= form.fields_for :childs do |child| %> <%= render 'child_fields', { f: child, master_item: master_item } %> <% end %> <% end %> </tbody>

のようにマスタデータが格納された配列@master_itemsをeachしてその分_child_fileds.html.erbをrenderしていますが、この場合、@master_itemsの要素数の2倍のrenderをしてしまいます。

@master_itemsをeachしている中で、fileds_forで子モデルのデータ数分renderを繰り返すのが原因だと思っていますが、どうにも解決する方法が思いつかないため、質問させていただきました。

@master_itemsの中身が2件であれば、2回renderさせ、以下のように表示されるのが実現したい内容となります。
イメージ説明
※実際に入力する部分は一番右のth要素の下の入力欄のみとなります。

現在は、@master_itemsが2件であるにも関わらず、4回renderをしてしまっている状況です。

上記以外のソースコード

Parent.rb

parent.rb

1class Parent < ApplicationRecord 2 has_many :childs 3 accepts_nested_attributes_for :childs 4end

Child.rb

child.rb

1class Child < ApplicationRecord 2 belongs_to :parent 3end

_child_fileds.html.erb

<tr class="nested-fields"> <td><%= master_item.item1 %></td> <td><%= master_item.item2 %></td> <td><%= master_item.item3 %></td> <td><%= master_item.item4 %></td> <td><%= f.number_field :child_input_item, class: 'form-control' %></td> </tr>

補足情報(FW/ツールのバージョンなど)

  • Ruby: 2.5.7
  • Ruby on Rails: 5.2.4
  • gem cocoon: 1.2.14

足りない情報がありましたら、ご指摘ください。
説明が難しく、不足している部分が多いと思いますが、ご協力お願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問