Ruby on rails 在RubyonRails中嵌套三层深度资源

Ruby on rails 在RubyonRails中嵌套三层深度资源,ruby-on-rails,ruby,nested,resources,Ruby On Rails,Ruby,Nested,Resources,我有三个级别的深层嵌套资源,例如父级、子级和注释 Rails.application.routes.draw do resources :parents do resources :children do resources :grand_children end end end 在操作中grand#u children#new会提醒“父项必须存在” 有谁能帮我创建一个嵌套在三层深中的grand_children吗?在您的孙子女模型中,您可以拥有属于:chi

我有三个级别的深层嵌套资源,例如父级、子级和注释

Rails.application.routes.draw do
  resources :parents do
    resources :children do
      resources :grand_children
    end
  end
end
在操作中
grand#u children#new
会提醒“父项必须存在”
有谁能帮我创建一个嵌套在三层深中的grand_children吗?

在您的
孙子女
模型中,您可以拥有
属于:child,可选:true
,但我不确定这会解决您的路由错误,因为嵌套路由需要父代存在

也许解决方案是让您的
grand_children#new
操作确保父
child
存在,并且在创建
grand_child
记录时传入外键
child\u id

孙子控制器#new应具有
@grand_children=Parent.find(参数[:Parent_id]).children.find(参数[:children_id]).grand_children.new
,对于创建操作(使用相同的嵌套链)甚至对于显示/编辑操作也是如此,因为如果孙辈的父id不是1或孙辈的子id不是1,您应该无法看到URL为
/parents/1/children/1/grand_children/2的孙辈2。这可以防止基本的URL操作。