前提・実現したいこと
実現したいことはタイトル通りでform_with
のなかでeach
を回して正常に動作するようにしたいです.
問題の回答画面を作成しているのですが,解答画面の中でform_with
を使い,それを送信するという風にしたいと考えています.
画面は以下のようなものです.
発生している問題・エラーメッセージ
each
を使うので複数のフォームが作られるのですが,送信ボタンを押してbinding.pry
でparams
を見ると以下のように1つしかパラメータが存在しません.
[1] pry(#<Student::AnswersController>)> params => <ActionController::Parameters {"utf8"=>"✓", "authenticity_token"=>"zR82kZIjwyWRZZwtJCU1wGneOIV/hu8YmYmecI49uRuVxIh9acjHdmF7dorCN3WpffhodQLUAVmVoPpQPG2fyA==", "danger_level"=>"1", "commit"=>"答え合わせ", "controller"=>"student/answers", "action"=>"answer_check"} permitted: false>
このときフォームは5つ存在していましたがparams
で返ってきた情報は最後のフォームの情報だけでした.
該当のソースコード
ビュー
ruby
1<div class="answer-wrapper"> 2 <h1>問題解答</h1> 3 <h4 class="answer-label-title">それぞれのユーザーに対する危険度を解答してください</h4> 4 <br> 5 <%= form_with url: student_answer_answer_check_path, local: true do |form| %> 6 <% @virtual_users.each do |virtual_user| %> 7 <p class="answer-label-title"><%= form.label :virtual_user_id, virtual_user.name %></p> 8 9 <%= form.label :danger_level, '危険度' %> 10 <%= form.select(:danger_level, [["原状情報の流出はない", 1], ["今後の投稿次第では危険", 2], ["個人情報が流出している", 3]], {prompt: "危険度を選択してください"}) %> 11 <br> 12 <br> 13 <% end %> 14 <%= form.submit "答え合わせ" %> 15 <% end %> 16</div> 17
試したこと
調べたところ,
「同じ名前のフィールドが現れると新しい要素に移ったと解釈するので、常にフィールドが送信されるテキストフィールドや hidden フィールドを先頭に持ってこなければならない」
とのことだったのでhidden_fieldを使用してみましたが特に変化がありませんでした.(自分の使い方の問題かもしれない)
わかりづらい質問かもしれませんがご助言いただければ幸いです.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/08 08:11 編集