Rails Routes - 嵌套的单个资源:id,NOT:resource-name_id

时间:2014-08-28 15:55:25

标签: ruby-on-rails routes

在我的路线中,我有一个嵌套资源,如:

namespace :public, path: "/" do
constraints(Subdomain::Public) do
  namespace :v1 do
    post  "/webhooks/:id/test",  to: "webhooks#test" 
    resources :webhooks,       only: [ :index, :show, :create, :update, :destroy ]

后期webhook路线变为:

POST   /v1/webhooks/:id/test(.:format) 

这很好。但是我想要清理它有点像这样:

namespace :public, path: "/" do
constraints(Subdomain::Public) do
  namespace :v1 do
    resources :webhooks, only: [ :index, :show, :create, :update, :destroy ] do
      post :test
    end

这导致这样的路线:

POST   /v1/webhooks/:webhook_id/test(.:format) 

不好。我想在路径中使用常规:id。我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

  resources :webhooks, only: [ :index, :show, :create, :update, :destroy ] do
    member do
      post :test
    end
  end

答案 1 :(得分:0)

这就是Rails路由器设置的方式。如果您不喜欢它的生成方式,您可以随时使用您喜欢的参数名称制作手动路线,就像您在第一个示例中所做的那样。

一般来说,我认为最好的两个人在这里采用这个惯例而不是贬低它。这只是参数的名称,而不是最终用户可见的内容。违反惯例越多,代码就越不规范,维护起来就越困难。