2009-12-03 20 views
2

其他屬性在我的routes.rb訪問資源在routes.rb中使用多個id

map.resources :novels do |novel| 
    novel.resources :chapters 
end 

通過上述定義的路由我有以下的,我可以用xxxxx.com/novels/:id/chapters/:id訪問的章節。 但這不是我想要的,章節模型有另一個稱爲數字的字段(它對應於章節號)。我想通過一個類似於 xxxx.com/novels/:novel_id/chapters/:chapter_number的URL來訪問每一章。如何在不明確定義命名路由的情況下完成此任務?

現在,我通過使用上述map.resources定義瞭如下命名的路由這樣做:小說

map.chapter_no 'novels/:novel_id/chapters/:chapter_no', :controller => 'chapters', :action => 'show' 

感謝。

回答

6

:id可以幾乎任何你想要的。所以,離開路由配置不變,並從

class ChaptersControllers 
    def show 
    @chapter = Chapter.find(params[:id]) 
    end 
end 

改變你的行動,(假設你要搜索的是所謂:chapter_no場)

class ChaptersControllers 
    def show 
    @chapter = Chapter.find_by_chapter_no!(params[:id]) 
    end 
end 

還要注意:

  1. 我'使用砰!取景器版本(find_by_chapter_no!而不是find_by_chapter_no)來模擬默認find行爲
  2. 您正在搜索應該有更好的性能
  3. 數據庫索引字段
+1

我試圖做同樣的,我有一個用鬥氣此方法:show_chapter_url(章節)不再起作用。有沒有辦法解決這個問題?或者我應該發起並使用show_chapter_url(chapter.chapter_no)(或者實際上等同於我自己的應用程序)? – FrontierPsycho 2013-06-22 19:58:07