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