我有一个这样的嵌套对象:
class Work < ActiveRecord::Base
belongs_to :issue
belongs_to :author
has_many :pages, :class_name => 'Work'
accepts_nested_attributes_for :pages, :allow_destroy => true
end
class Page < ActiveRecord::Base
belongs_to :work
end
我有一个创建/编辑作品的表单,其中包含嵌套页面对象的字段。我按照这篇文章进行设置,所以我使用了一个助手,以便我的表单在您开始时创建一个新页面。
module AdminHelper
def make_work(work)
returning(work) do |w|
w.pages.build if w.pages.empty?
end
end
end
然后,在我的部分形式中,我有:
- form_for make_work(@work) do |f|
...
- f.fields_for :page do |page_f|
= page_f.label :text
%br
= page_f.text_area :text
%p
= f.submit "Submit"
显示页面的字段,但是当它被提交时,它会在works控制器中查找创建操作。创建操作在管理工作控制器(命名空间)中,因此中断。
我尝试使用命名空间对象,但如果我这样做,它不知道页面:
- form_for make_work([:admin, @work]) do |f|
...
如何将命名空间与嵌套对象表单一起使用,使其具有 pages 方法,但发布到命名空间的 admin/works 控制器?