我使用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_field
用于parent_id
,因为在我的创建操作中,由于批量分配,它会崩溃。另一方面,当我拯救孩子时,我需要通过parent_id
来了解我的父母。我没有找到一个好的工作实例。
答案 0 :(得分: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