実現したいこと
Questionモデルの配列それぞれに対し、Answerモデルの:contentという入力を送信するフォームを作りたいのですが、うまくいきません
環境
ruby '2.5.3'
rails '5.2.2'
該当のソースコード
view
1reviews > new.html.erb 2 3<% @questions.each do |q| %> 4<%= "#{q.q_sentence}" %> 5<%= f.fields_for :answer do |af| %> 6<%= af.text_field :content, class: 'form-control' %> 7<%= af.hidden_field :question_id, :value => q.id %> 8```q_sentenceは質問文です 9質問文それぞれの下にテキストフィールドを表示させようとしています。 10 11 12 13```controller 14class ReviewsController < ApplicationController 15def new 16 @concert = Concert.find_obfuscated(params[:concert_id]) 17 @review = Review.new(flash[:review]) 18 @questionary = Questionary.find_obfuscated(params[:questionary_id]) 19 @questions = Question.where(questionary_id: @questionary.id) 20end 21 22def review_params 23 params.require(:review).permit(:area_of_residence, :comment, :occupation, :concert_id, :questionary_id, answer_attributes:[:id, :question_id, :review_id, :content] ) 24end
model
1 2class Questionary < ApplicationRecord 3 belongs_to :concert 4 has_many :reviews, dependent: :destroy 5 has_many :questions, dependent: :destroy 6 accepts_nested_attributes_for :questions 7 obfuscatable 8end 9 10class Review < ApplicationRecord 11 belongs_to :questionary 12 has_many :answers 13 accepts_nested_attributes_for :answers 14 obfuscatable 15end 16 17class Question < ApplicationRecord 18 belongs_to:questionary 19 has_many :answers, dependent: :destroy 20 accepts_nested_attributes_for :answers 21 obfuscatable 22end 23 24class Answer < ApplicationRecord 25 belongs_to :question 26 belongs_to :review 27end
わかりづらくて申し訳ないのですが、モデルの同士の関係はこのようにするつもりで書いています
Qestionのq_sentenceカラムに質問文の情報があり
Questionaryは年齢、職業などを質問するかどうか?のフラグ用のパラメータを保管しています
Reviewnのnew画面から、Answerのcontent(質問の回答)とQuestionのidを同時に送りたいです。
発生している問題・エラーメッセージ
######入力
######出力
Parameters: { ~省略~ "answer"=>{"content"=>"回答1:テスト質問2", "question_id"=>"2"}, "commit"=>"保存", ~省略~}
二つ目の入力しかparametersに渡っていませんでした。
下のサイトを参考に、fields_forの第二引数に@questionsの配列を渡す方法も考えたのですが、上手くいきませんでした。
https://kyudy.hatenablog.com/entry/20121114/1352906270
質問に不慣れなので不足している情報があるかもしれません。
追記するので教えていただければ幸いです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。