2014-08-28 79 views
0

在我的路線我有一個嵌套的資源,像這樣:Rails的路線 - 嵌套單一的資源用:ID,而不是:資源名_ID

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 ] 

的後網絡掛接路線變爲:

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。我在這裏做錯了什麼?

回答

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

這就是我一直在尋找的。 – cheeseandpepper 2014-08-28 16:17:52

0

這就是Rails路由器設置的方式。如果您不喜歡它生成的方式,您可以使用您喜歡的參數名稱進行手動路由,就像您在第一個示例中所做的那樣。

通常我會說這是最好的兩個擁抱這裏的公約,而不是貶低它。這只是參數的名稱,對最終用戶不可見。你違反約定的越多,你的代碼越不規範,維護就越困難。