0

我有 QuestionSet、Question 和 Choice 表

class QuestionSet < ActiveRecord::Base
    attr_accessible :name
    has_many :questions
end

class Question < ActiveRecord::Base
    attr_accessible :name, :correct_answer

    belongs_to :question_set
    has_many :choices
end

class Choice < ActiveRecord::Base
    attr_accessible :question_id, :value
    belongs_to :question
end

我想将 Choice 的 id 分配为 Question 的正确答案。但是由于新的nested_form_for 子对象还没有真正的ID,我只能为已经保存的选项分配正确的答案,但对刚刚通过link_to_add 创建的选项不起作用。下面的简化“视图”代码:

<!-- BTW 'f' below is QuestionSet -->
<%= f.fields_for :questions do |f_f| %>
    <!-- Question Name -->
    <%= f_f.text_field :name %>

    <%= f_f.fields_for :choices do |f_f_f| %>
        <!-- Designate as Correct Answer -->
        <%= f_f.radio_button :correct_answer, f_f_f.object.id %><!-- THIS IS THE PROBLEM-->
        <!-- Choice Name -->
        <%= f_f_f.text_field :value %> 

        <%= f_f_f.link_to_remove "Remove Choice" %>
    <% end %>
    <%= f_f.link_to_add "Add Choice", :choices %>

    <%= f_f.link_to_remove "Remove Question" %>
<% end %>

<%= f.link_to_add "Add Question", :questions %>

再次,代码仅在选择之前已保存且已具有 id 的情况下才有效并将选择子项的 id 分配为问题的“正确答案”。但是,它不适用于那些由 link_to_add 创建的新创建的选择子项。

任何帮助将不胜感激。谢谢!:)

4

1 回答 1

0

为什么不将 :correct_answer 字段移至 Choices 并使其成为布尔值?这将简化很多事情

于 2013-12-06T08:41:18.433 回答