2011-09-13 38 views
1

我有一些文檔(和一個DocumentsController),它們使用有限的固定的一組類別進行排序。我希望我的路線要考慮到這些類別,所以我的網址看起來像:Rails 3路由:定製一個足智多謀的路線

/documents/:category/:id 
/documents/:category/new 
/documents/:category/:id/edit 

...等等,這應該讓我來訪問PARAMS [:類別】爲了篩選結果。有沒有簡單的方法來實現這一點,,仍然會產生路徑助手?或者我錯了,這樣做呢?

+0

我相信你想讓給定的id屬於一個類別的文檔正確嗎? –

+0

沒錯。我目前正在嘗試使用'資源:文檔,:路徑=>「文件/:類別」',似乎工作...是好的嗎? –

+0

您可以將:path變量更改爲任何你喜歡的。這不是完全命名空間,因爲類別是在文檔之後指定的。這更像是一個具有自定義路徑的嵌套資源。查看http://guides.rubyonrails.org/routing.html#controller-namespaces-and-routing瞭解更多關於命名空間和嵌套資源的信息。 –

回答

2

您可以提供的資源的路徑(如你所提到的):

# config/routes.rb 
resources :documents, :path => 'documents/:category' 

這會爲您提供以下路線:

/documents/:category 
/documents/:category/new 
/documents/:category/:id/edit 
/documents/:category/:id 

我不知道在這種情況下,有什麼目的因爲您可以通過主鍵來引用文檔,因此可以使用類別捕獲。這個關鍵很可能不會在各個類別中重複。

+0

你說得對,但我希望能夠縮小可訪問文檔的範圍。正如我寫這篇文章的時候,這讓我明白我的做法可能不是很好。也許應該我的控制器上的每個類別的行動,因爲我只真的需要這樣做有很多類似索引的行動範圍縮小。我甚至可以通過元編程生成這些動作......感謝幫助我。 –

2

不難以自定義的Rails 3

match '/documents/:id', to: 'documents#show', as: :document路徑會給你的路徑幫手document_path(:id)。即使對於一個字符串而不是數字的ID,這也可以工作,所以將此模式擴展爲/documents/:category/:id/edit應該不成問題。