2011-03-20 33 views
0

我有很多的鏈接這樣的: /用品/ ... /專輯/ ... /照片/ ... 等RoR路線問題。在網址的開頭部分城市

我需要使用的名稱城網址的開頭,如果用戶選用了它: /CITY_NAME /用品/ ... /CITY_NAME /專輯/ ... /CITY_NAME /照片/ ...

但以前的鏈接建議立即進行刪除工作太(/ articles/...,/ albums/...)

我試過這個:

map.articles '/articles/', :controller => "zags", :action => "cities", :using_city => 1 
map.articles '/:city_url/articles/', :controller => "zags", :action => "cities", :using_city => 1 

<%= link_to "London articles", articles_path, { :city_url => "london", :using_city => 1 } %> 

但它不起作用。 我應該改變什麼? 我知道,我可以更改地圖名稱「map.articles」中的一個,但我想在我的View代碼中使用相同的路由名稱。如何才能做到這一點?

回答

0

我想你只是創建你的網址錯誤。它應該是這樣的:

<%= link_to "London articles", articles_path(:city_url => "london", :using_city => 1) %> 

你可以有你的文章的路徑衝突爲好,因爲你正在使用map.articles兩次。也許第二個可能是map.articles_by_city ...有適當的命名。在這種情況下您的鏈接更改,如:

<%= link_to "London articles", articles_by_city_path(:city_url => "london", :using_city => 1) %> 

順便說一句,如果你使用的是軌道3我建議以下路由定義。

match "(:city_url/)articles/", :controller => "zags", :action => "cities", :using_city => 1, :as => "articles" 

此爲您設置這兩種情況下,所以:city_url成爲一個可選的參數。在這種情況下,您的路徑將僅爲articles_path,url將看起來像/articles/

如果傳遞articles_path("london")您的網址看起來就像/london/articles/

希望這有助於。

0

你應該能夠用單一途徑做到這一點:

map.articles '(/:city)/articles', :controller => 'zags', :action => 'cities' 

<%= link_to "Articles", articles_path %> 
<%= link_to "London Articles", articles_path(:city => "london") %>