新的編輯用「的link_to」
隨着resources :cases
在routes.rb
預期所有這些路由的助手工作問題(c是模型實例的實例):
cases_path # Index action
new_case_path # New action
case_path(c) # Show action
edit_case_path(c) # Edit action
更改routes.rb
這樣:
scope "/:area" do
resources :cases
end
兩個路由助手失敗(請參閱下面的錯誤):
cases_path # OK
new_case_path # OK
case_path(c) # Fail
edit_case_path(c) # Fail
爲了使它工作,我需要改變過去的兩個幫手在:
cases_path # OK
new_case_path # OK
case_path(c, :area => params[:area]) # OK
edit_case_path(c, :area => params[:area]) # OK
爲什麼就沒有必要給:區域前兩個幫手,有必要對後兩個?這使得代碼混淆...
老問題
起初,我有這樣的routes.rb:
resources :cases
,我可能會產生這種類型
example.com/cases/3
顯示的鏈接ID = 3的情況:
link_to("Show this case", @case)
然後我修改的routes.rb到:
scope "/:area" do
resources :cases
end
末端上方的link_to給我的錯誤
No route matches {:action=>"show", :controller=>"cases", :area=>#<Case id: 2,
看來,軌道沒有得到:從參數自動區域。我可以解決這個問題迫使該地區建立一個鏈接與
link_to("Show this case", case_path(params[:area], @item))
獲得的鏈接
example.com/area1/cases/3
,但我真的不喜歡它。難道我做錯了什麼?爲什麼軌道帶來控制器和行動,但忘了該地區?如果您指定area
作爲參數
這工作,謝謝! – Lucamug 2011-05-24 17:28:23
這在範圍內工作得很好,但是連接到範圍之外的路由(例如root_path)包含'?area = 1'作爲查詢字符串參數(因爲該參數不存在於路由中)。如何在連接範圍外連接時刪除參數? – dsample 2013-09-14 22:27:12