0

我正在开发一个 Rails4.0 应用程序,其中我使用 gem Ancestry 进行层次结构实现。我有一个模板模型,它有很多问题。我必须能够对这些问题模型进行分组和分组。每个模板可以有很多问题组,在这些问题组下我可以有很多问题或问题子组(但不能同时有)。顺便说一句,只有两个模型涉及“模板”和“问题”。例如:

Template
    QuestionGroup1
        Question_Subgroup1
             Question 1
             Question 2
    QuestionGroup2
        Question_Subgroup1
        Question_Subgroup2
    QuestionGroup3
        Question1
        Question2
        Question3

我希望这个例子不会令人困惑。使用 Ancestry 我可以在父母下创建一个孩子,但我无法进行分组。请在这方面指导我。

我在下面发布代码:

模板模型

class Template < ActiveRecord::Base
  has_many :questions
   accepts_nested_attributes_for :questions, allow_destroy: true, reject_if: proc { |attributes| attributes.all? { |key, value| key == '_destroy' || value.blank? } }
end

问题模型

class Question < ActiveRecord::Base
  has_ancestry
  belongs_to :template
end

在 Question Index.html.haml 页面上,代码如下:

%h4 Template Details
%hr
.row-fluid
  .span4
    %fieldset.template_outline
      %strong Template Outline
      %br
      = link_to 'Add Group', new_template_path(@template), id: "add_question_group"
      %hr
        = render 'questions_group'
    %br/

Question_group 部分

%ul.questions_group
    - @questions.roots.each do |question|
        %ul#questions_sub_group
        - question.subtree.each do |questions_sub_group|
            %li= link_to questions_sub_group.text_brief, edit_template_question_path(questions_sub_group.template, questions_sub_group)
        = link_to 'Add Question', new_template_requirement_path(@template, parent_id: requirement)
        = link_to 'Delete Question', [question.template, question], :method => :delete, :data => { :confirm => 'Are you sure?' }

如您所见,我可以添加和删除一个问题。我希望能够将它们分组。可以在不使用其他模型的情况下完成吗?问题组和单个问题之间的区别在于,一个组只有一个“标题”,而一个问题有一个“标题”和“描述”。

4

0 回答 0