在 Rails 6 中指定命名空间之外的控制器
Specify controller outside of namespace in Rails 6
我当前的设置有效:
concern :commentable do
resources :comments, only: %i[create destroy], controller: '/comments'
end
并在路由下使用
namespace :admin do
resources :discussions, concerns: %i[commentable]
end
在 rails 6 中,当我这样做时,我得到:
ArgumentError ('/comments' is not a supported controller name. This can lead to potential routing problems. See https://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use):
如何指定路由当前模块之外的控制器?
问题出在这里:
concern :commentable do
resources :comments, only: %i[create destroy], controller: :comments # No '/comments'
end
这将自动投放 POST /comments
和 DELETE /comments/:id
。然后当你将这个问题挂载到你的命名空间时应该可以正常工作
嗯,我没有找到解决这个问题的方法,但我找到了解决方法。
将 namespace :admin
替换为 scope '/admin/', module: :admin, as: :admin
然后您可以使用 controller: '/comments'
引用当前命名空间之外的控制器。
concern :commentable do
resources :comments, only: %i[create destroy], controller: '/comments'
end
我当前的设置有效:
concern :commentable do
resources :comments, only: %i[create destroy], controller: '/comments'
end
并在路由下使用
namespace :admin do
resources :discussions, concerns: %i[commentable]
end
在 rails 6 中,当我这样做时,我得到:
ArgumentError ('/comments' is not a supported controller name. This can lead to potential routing problems. See https://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use):
如何指定路由当前模块之外的控制器?
问题出在这里:
concern :commentable do
resources :comments, only: %i[create destroy], controller: :comments # No '/comments'
end
这将自动投放 POST /comments
和 DELETE /comments/:id
。然后当你将这个问题挂载到你的命名空间时应该可以正常工作
嗯,我没有找到解决这个问题的方法,但我找到了解决方法。
将 namespace :admin
替换为 scope '/admin/', module: :admin, as: :admin
然后您可以使用 controller: '/comments'
引用当前命名空间之外的控制器。
concern :commentable do
resources :comments, only: %i[create destroy], controller: '/comments'
end