Rails高階路由知識:手動為路由建立名稱
阿新 • • 發佈:2019-01-30
常規在routes.rb中設定的路由規則,rails都會為我們順便建立一個名稱,比如:
risks GET /risks(.:format) risks#index
POST /risks(.:format) risks#create
new_risk GET /risks/new(.:format) risks#new
edit_risk GET /risks/:id/edit(.:format) risks#edit
risk GET /risks/:id(.:format) risks#show
PATCH /risks/:id(.:format) risks#update
PUT /risks/:id(.:format) risks#update
DELETE /risks/:id(.:format) risks#destroy
如上所列,用resources :risks建立的增刪改查的全套路由,注意最前面的諸如edit_risk之類的名稱,後面加上path就可以在view或controller裡使用了:
link_to("編輯風險",edit_risk_path(@risk))
很方便吧,你不用再費時寫”/risks/#{id}”之類的東東了.
不過有些情況下,rails不會為個別方法建立名稱,因為它不知道替你取什麼名字好啊.比如我在risks中再新增一個新方法:
resources :risks do
collection do
post "fake_delete/:id"=>"risks#fake_delete"
end
end
上生成的路徑就沒有名稱,不信!?你可以自己敲rake routes看一下:
POST /risks/fake_delete/:id(.:format) risks#fake_delete
噥,post前面沒有東東吧!?為了方便起見我們還是想自己手動設一個名稱,OK!相當的簡單,在原路徑後面加上as引數即可:
post "fake_delete/:id"=>"risks#fake_delete",as:"fake_delete"
再看生成的路由:
fake_delete_risks POST /risks/fake_delete/:id(.:format) risks#fake_delete