私は自分のウェブサイトのアンケートを作成していて、次のようにモデルを設定しています。
Question - has_many :answers
Answer - belongs_to :question
Response - belongs_to :answer, :user_application
UserApplication - has_many :responses
Answers
答えが設定されている場合は、はい、いいえ、または文である可能性がありますResponses
。ネストされたリソースであるため、質問の数に基づいて応答を作成し、新しいフォームで使用できるようにUserApplication
、新しいアクションを実行します。それがレンダリングされるとき、ネストされた応答に、回答のIDを持つラジオボタンを持たせたいです。したがって、フォームが送信されると、ネストされた応答は選択された回答のIDを受け取ります。私はこれを行うための最良の方法を理解することができません。現在、私は次のようにしています。UserApplicationsController
f.fields_for
UserApplicationController
def new
@user_application = UserApplication.new
@questions = Question.all
respond_to do |format|
format.html # new.html.erb
format.json { render json: @user_application }
end
end
新しいフォーム
= form_for @user_application do |f|
- @questions.each_with_index do |question, idx|
= question.content
.control-group
.controls
= select_tag "user_application[responses_attributes][#{idx}][answer_id]", options_for_select(question.answers.map {|u| [u.content,u.id]})
ユーザーがアプリケーションを編集するときに、前の回答の選択ボックスが選択されていないため、これは少しハッキーな感じがします。私は自分の問題を可能な限り説明しようとしました。誰かが私がやろうとしていることを理解できれば、どんな助けもいただければ幸いです!あなたが何かを知る必要があるならば、尋ねてください!
ありがとう
トニー