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

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

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

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

Ruby

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

571閲覧

【Ruby on Rails5】動的フォームの作成

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Ruby

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/11/12 12:37

###動作環境(gem)
ruby 2.4.4p296
Rails 5.2.0
nested_form_fields 0.8.2

現在行っていること・問題

nested_form_fieldsを用いた動的フォームの作成を行っています。
・newアクションにて、フォームの追加ボタンを設置し、submitボタンでDBに送信することで、複数のレコードを保存したいと考えております。
・モデル名はChecklist、Formオブジェクトで一連の作業をするつもりです。
・動的フォームを適用するところでエラーを吐かれました。
エラーメッセージは以下のようになっています。`each_with_index'がどこにも見当たらず、どうして良いかわかりません。どうか回答をよろしくおねがいします。

対処法が全くわからず、掲載すべき情報もわからないので、情報が少ないかもしれません。
その時はコメントにて指摘をお願いします。お手数おかけします。

参考にしたサイト

Ruby on Railsで動的に追加・削除可能な入力フォームの実装手順

1.2. 一括登録フォームの実装 - Railsアプリケーション構築ガイド

エラーメッセージ

ActionView::Template::Error (undefined method `each_with_index' for nil:NilClass)

new.html.erb

html

1<%= form_for @checklist_form do |form| %> 2###ここでエラーを吐かれました↓ 3 <%= form.nested_fields_for :checklists, wrapper_tag: :div do |c| %> 4 <div> 5 <%= c.number_field :number %> 6 <%= c.text_area :content, :class => "text-area", :size => "50×15"%> 7 <%= c.remove_nested_fields_link 'Delete', role: 'button' %> 8 </div> 9 <% end %> 10 <%= form.add_nested_fields_link :checklists, 'Add new', role: 'button' %> 11 <%= form.submit "登録" ,:class => "link-button"%> 12<% end %>

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

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

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

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

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

guest

回答2

0

ベストアンサー

おそらく内部で @checklist_form.checklists.each_with_index を実行している気がします
@checklist_form.checklists は何を返しているでしょうか

また Checklist モデルにしか言及していませんが、ChecklistForm モデルはありますか?
親子構造の子の部分を動的に作るための gem なので、親子構造と一括Attributes定義をしないと動きません

ruby

1class ChecklistForm < ApplicationRecord 2 has_many :checklists 3 accepts_nested_attributes_for :checklists, allow_destroy: true 4end 5class Checklist < ApplicationRecord 6 belongs_to :checklist_form 7end

投稿2018/11/13 08:21

Ighrs

総合スコア656

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

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

退会済みユーザー

退会済みユーザー

2018/11/13 10:39 編集

回答ありがとうございます。 @checklist_form.checklistsの出力は、 "#<Checklist:0x000000000e3639a0>"でした。 ChecklistFormは、checklistにデータを保存するための操作をもつフォームオブジェクトで、テーブルを持ちません。また、Checklistモデルの親モデル(projectモデル)は別にあります。そのモデルとは、親子構造・attributes定義はできています。 現在取り組み中のものは、既に親モデルのレコードはProject#newにて作成済みで、それに紐付く複数のレコードをChecklist#newにて作成する、というものです。
guest

0

each_with_indexのレシーバが何なのか分かりませんが、もしかしたら@checklist_formに何も入っていないのかな?と思ったのと、
|form|のformが予約語で重複してNGとかもあるかな?とも思います

僕はちなみにcocoonという別のgemを使って動的フォームを実装していて、こちらの方が何となくですが
ドキュメント的にも分かりやすく使いやすいかなと思いましたので、ご参考程度に
http://hyperneetprogrammer.hatenablog.com/entry/2016/01/14/180000

投稿2018/11/13 03:34

space-hippy

総合スコア136

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

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

退会済みユーザー

退会済みユーザー

2018/11/13 09:59 編集

"form"を変えてみても、同じエラーでした。現状私の力ではどうしようもなさそうなので、とりあえずcocoonを試してみます。アドバイスありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問