0

我使用 rails 3.2,我想防止批量分配。我有亲子关系。

class Parent < ActiveRecord:Base
    has_many :children
    attr_accessible :name
end
class Child < ActiveRecord:Base
    belongs_to :parent
    attr_accessible :title
end

在我的 routes.rb 中,子资源没有嵌套在父资源中。现在我有一个链接来创建一个新的孩子new_child_path(@parent.id)。这指示我localhost:3000/child/new?parent_id=1,我最终new采取行动:

def new
    @child = Child.new
    @parent = Parent.find(params[:parent_id])
    @child.parent = @parent
end

我的问题是:如何为_form.html.erb子实体编写我的?我不能使用f.hidden_fieldfor,parent_id因为在我的创建操作中,它会因为批量分配而中断。另一方面,parent_id当我救孩子时,我需要通过了解我的父母。我还没有找到一个很好的工作示例。

4

1 回答 1

1

您应该阅读 Rails 的嵌套资源。

一些链接:

http://railscasts.com/episodes/139-nested-resources

-- 编辑 1 --

根据您没有超过一层嵌套的评论,您还可以具有以下路由配置:

resources :grandparents do
    resources :parents
end

resources :parents do
    resources :children
end

这样,您仍然可以拥有父子关系,而无需多级嵌套的开销。您还可以命名您的控制器以保持清洁,例如:

resources :grandparents do
    resources :parents, :controller => "grandparent/parent"
end

resources :parents do
    resources :children
end
于 2012-05-30T12:17:32.237 回答