我正在使用带有awesome_nested_set的Rails 3.0.7,我正在尝试创建一个嵌套表单,它将允许我在一个创建表单中输入一个类别和子类别。
这是我的分类模型,控制器&形成
类别.rb
class Category < ActiveRecord::Base
acts_as_nested_set
end
类别_控制器.rb
class CategoriesController < InheritedResources::Base
def new
@category = Category.new
3.times { @category.children.build(:name => "test") }
end
end
形成
= form_for @category do |f|
-if @category.errors.any?
#error_explanation
%h2= "#{pluralize(@category.errors.count, "error")} prohibited this category from being saved:"
%ul
- @category.errors.full_messages.each do |msg|
%li= msg
.field
= f.label :name
= f.text_field :name
%p Sub categories
= f.fields_for :children do |child|
= child.text_field :name
.actions
= f.submit 'Save'
这里的问题是,我的表单中只有一个子类别,而且它的名称没有设置为"test",所以我不相信它实际上是这里显示的类别的子类别。
我在这里错过了什么?
这能做到吗?
有没有更简单的方法?
更新如果我将表单更改为以下内容,那么它将显示三个子类别,每个子类别的名称都设置为"test"。但这将无法正确保存。
%p Sub categories
- @category.children.each do |sub|
= f.fields_for sub do |child|
= child.label :name
= child.text_field :name
%br
找到了我的答案,并在这里写了一个关于它的wiki页面:
https://github.com/collectiveidea/awesome_nested_set/wiki/nested-form-for-nested-set