我想获得一条类似的路线
GET /example/notifications/status, to: example/notification#status
POST /example/notifications/disable to: example/notification#disable
这就是我所做的
resources :example, only => %i[index] do
collection do
resources :notifications, :only => [] do
collection do
get :status
post :disable
end
end
end
end
它获得正确的路径,但指向notification#status
而不是example/notification#status
有什么办法可以让我获得正确的路径和控制器期望的代码吗
get "notifications/status", :to => "example/notifications#status"
答案 0 :(得分:0)
您可以使用namespace
来实现此目的,如下所示,
在您的config/routes.rb
文件中
namespace :example do
collection do
get :status
post :disable
end
end
它将执行example/notification#status
操作。
有关更多信息,请参见here
答案 1 :(得分:0)
请勿使用resources
,因为您(显然)不希望路线上有任何参数。改为使用namespace
:
namespace :example do
namespace :notifications do
get 'status'
post 'disable'
end
end
给你:
$ rails routes -g example
Prefix Verb URI Pattern Controller#Action
example_notifications_status GET /example/notifications/status(.:format) example/notifications#status
example_notifications_disable POST /example/notifications/disable(.:format) example/notifications#disable