У меня есть приложение для опроса, которое позволяет людям создавать вопросы. Когда пользователь создает новый вопрос, он также может предоставить варианты ответа. Для примера. Вопрос: Какого цвета небо? Опции ответа: синий, красный, фиолетовый.Rails 4: Сохранение нескольких экземпляров одной модели в одной форме
В настоящее время моя единственная форма позволяет создать модель вопросов и модель параметров, но я хочу создать несколько вариантов из той же формы.
Должен ли я создать неограниченный form_tag, который позволяет пользователю отправлять массив хэшей и перебирать этот массив для создания каждой записи модели параметров? Или есть другой способ сделать это?
option.rb
class Option < ActiveRecord::Base
belongs_to :question
end
question.rb
class Question < ActiveRecord::Base
has_many :options
accepts_nested_attributes_for :options
end
Вопросы Контроллер
class QuestionsController < ApplicationController
def new
@question = Question.new
@question.options.build
end
def create
@question = Question.new(question_params)
if @question.save
redirect_to @question
else
render 'new'
end
end
private
def question_params
params.require(:question).permit(:title, :desc, options_attributes:[:id, :scope, :option, :question_id])
end
end
_form.html.erb
<%= form_for @question do |f| %>
<%= f.text_field :question, class: "form-control", placeholder: "Survey Question?" %>
<%= f.fields_for :options do |u| %>
<%= u.text_field :option, class: "form-control", placeholder: "Answer Option 1", id: "answer"%>
<%= u.text_field :option, class: "form-control", placeholder: "Answer Option 2", id: "answer"%>
<%= u.text_field :option, class: "form-control", placeholder: "Answer Option 3", id: "answer"%>
<% end %>
<%= f.submit 'Submit', class: "btn btn-default" %>
посмотрите на nested_form, все станет ясно оттуда – Richlewis