Вложенная форма, сохраняющая только последний элемент в приложении Rails - PullRequest
0 голосов
/ 28 мая 2019

У меня есть приложение, в котором есть список вопросов в файле yaml.Некоторые вопросы будут иметь подвопросы.Таким образом, вопрос 20 может иметь 3 дополнительных вопроса, связанных с ним.Я создал модель ответа и модель SubAnswer с ассоциацией has_many и own_to.Я также позволил вложенным ответам быть вложенными атрибутами для модели ответа

class SubAnswer < ApplicationRecord
  belongs_to :answer

class Answer < ApplicationRecord
  has_many :sub_answers
  accepts_nested_attributes_for :sub_answers

В некоторых вопросах может быть от 0 или до 5 подвопросов.Я пытаюсь динамически предварительно заполнить вложенные поля, но мне было трудно это выяснить.

мое действие контроллера выглядит следующим образом

def form_page
  @question = Question.find_question_in_file(params[:question_index].to_i)
  @answer = Answer.new

  @category_questions_count = SurveyQuestion.questions_by_category(@question.gr_stream.downcase)
  @question_category = @question.gr_stream
end

def answer_params
  params.require(:answer).permit(:question_index, :answer_text, :survey_id, :answer_boolean, sub_answers_attributes: [:id, :question_index, :answer_text, :answer_boolean])
end

Мое действие создания - это просто печать параметров вмой терминал.

def create
  p params
end

И мой раздел nested_fields в моей форме выглядит следующим образом

<% @question.sub_questions.each_with_index do |q, index| %>
   <%= f.fields_for @answer.sub_answers.build  do |s| %>
     <p><strong>Q <%= @question.question_index %>.<%= index+1 %></strong></p>
     <p><strong><%= q[1]['question'] %></strong></p>
     <% if q[1]['form_fields']['boolean_field'] %>
       <div class="field">
         <div style="display:flex;">
           <%= s.label 'Yes or No' %>
           <%= s.check_box :answer_boolean, {}, true, false %> <br />
         </div>
       </div>
     <% end %>
     <% if q[1]['form_fields']['text_field'] %>
       <div class="field">
         <%= s.text_area :answer_text %> <br />
       </div>
     <% end %>
   <% end %>
  <% end %>

Я пытался перебрать каждый подвопрос и создать раздел fields_for.Каждый раз, когда я отправляю форму, основной ответ и последний дополнительный вопрос сохраняются.Если у меня есть 3 подвопроса, сохранится только последний.Ценю любую помощь по этому вопросу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...