Я застрял на этой простой задаче выбора. У меня есть следующие модели:
# id :integer(4) not null, primary key
# category :string(255)
# content :text
class Question < ActiveRecord::Base
has_many :choices, :dependent => :destroy
accepts_nested_attributes_for :choices
end
# id :integer(4) not null, primary key
# content :text
# correct :boolean(1)
# question_id :integer(4)
class Choice < ActiveRecord::Base
belongs_to :question
end
Когда я создаю новый вопрос, я хочу указать во вложенной форме не только содержимое
из Вопроса
, но даже содержимое
из 3 Ответьте на
объектов и выберите с помощью переключателя, какой из них является правильным
ответом. В действии new
контроллера у меня есть следующее:
def new
@title = "New Question"
@question = Question.new
3.times { @question.choices.build }
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @question }
end
end
Это код формы:
<%= simple_form_for @question do |question_form| %>
<%= question_form.error_notification %>
<div class="inputs">
<%= question_form.input :content, :label => 'Question' %>
<%= question_form.input :category, :collection => get_categories, :include_blank => false %>
<% @question.choices.each do |choice| %>
<%= question_form.fields_for :choices, choice do |choice_fields| %>
<%= choice_fields.input :content, :label => 'Choice' %>
<%= choice_fields.radio_button :correct, true %>
<%= choice_fields.label :correct, 'Correct Answer' %>
<% end %>
<% end %>
</div>
<div class="actions">
<%= question_form.button :submit %>
</div>
<% end %>
Проблема в том, что этот код создает три переключателя с разными именами: вы можете выбрать более одного правильный ответ, и это неправильное поведение. Названия трех переключателей: question [choices_attributes] [0] [правильно]
, вопрос [choices_attributes] [1] [правильно]
и вопрос [choices_attributes] [2] [правильно]
.
Вопрос: как создать три переключателя с одно и то же имя, чтобы выбрать один и только один правильный ответ? Как мне создать правильный массив params
, чтобы сохранить их в действии create
следующим образом:
def create
@question = Question.new(params[:question])
# render or redirect stuff....
end
Большое спасибо!