Rails: выбор радио-кнопки для вложенных объектов

Я застрял на этой простой задаче выбора. У меня есть следующие модели:

#  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

Большое спасибо!

13
задан oli-g 23 February 2011 в 12:19
поделиться