如何在 Rails 6 中的 Devise 路由中嵌入路由资源

How to embed a route resource in a Devise route in Rails 6

在正常情况下,如果要将资源嵌入到 routes.rb 文件中 Rails 上的 Ruby 中的其他资源中,它看起来像这样:

# routes.rb

resources :parents do
  resources :children
end

以上将允许像 http://localhost:3000/parents/1/children.

这样的 url

我的问题是如何使用我的 routes.rb 文件中存在的默认值 devise_for :parents 获得相同的结果?

我试过了:

# routes.rb

devise_for :parents do
  resources :children
end

它没有正常工作。

非常感谢任何帮助!

devise_for 只创建与注册和登录相关的路由,所以你仍然会使用

resources :parents do 
  resources :children
 end

在嵌套资源路径的路由中。这里有详细的回答:Nested Resource with Devise - Rails3

如果您生成 Devise 控制器和视图,您还需要像这样在路由中指定它们

  devise_for :parents, controllers: {
    sessions: 'parents/sessions',
    registrations: 'parents/registrations'
  }