2016-12-26 84 views
1

我的路由文件有一個定義的方法處理:如何更改Rails路由上的自動命名參數ID?

resources :disputes do 
    scope module: :disputes do 
    resources :conferences, shallow: true do 
     put :finish 
    end 
    end 
end 

導軌自動把與名稱:conference_id帕拉姆ID,但我希望使用:id來代替。

conference_finish PUT  /conferences/:conference_id/finish(.:format) disputes/conferences#finish {:format=>:json} 

有辦法做到這一點嗎?謝謝。

回答

2

你可以做這樣的事情:

put "conferences/:something/finish", to: "disputes/conferences#finish" 
1

,你可以通過按this guide's section使用成員選項改善加布裏埃爾的答案(我不知道它會在你的情況下工作):

resources :disputes do 
    scope module: :disputes do 
    resources :conferences, shallow: true do 
     member do 
     put :finish 
     end   
    end 
    end 
end 

你也可以使用一個線方式:

resources :disputes do 
    scope module: :disputes do 
    resources :conferences, shallow: true do 
     put :finish, on: :member 
    end 
    end 
end 

有了這個,你將在你的控制器中有params [:id]。順便說一下,資源永遠不應該嵌套超過1層。看看2.7.1 Limits to Nesting