我目前在爲我的應用程序設置正確的路由時遇到了一些問題。
總之我想有網址,像這樣:
解釋:
Show actual page for the selected poll
摘要:
localhost:3000/polls/:category_slug/:poll_id
例如:
localhost:3000/polls/technology/1337
路線s.rb
get 'polls/:category_slug/:poll_id' => 'polls#show', :as => :poll
Rails 3 - 覆蓋路由
而且用戶應該能夠對一些標準的篩選調查,像顯示頂投票,新的民調等等...
解釋:
Show a list of polls, which are matching the selected criteria
摘要:
localhost:3000/polls/:category_slug/:filter_mode
例如:
localhost:3000/polls/technology/top
的routes.rb
get 'polls/:category_slug/:filter_mode' => 'filter#by_mode', :as => :polls_filter
而這裏的
ActiveRecord::RecordNotFound : Couldn't find Poll with ID=top_all
第二條路線('polls/:category_slug/:filter_mode'
)被重寫第一路由,因此問題軌s將:filter_mode
識別爲:poll_id
。
所以我的問題是,我該如何改變這種行爲,所以這兩個路線將實際上工作
而不覆蓋對方?(第一條路線可以完美地工作,當我離開第二條路線時)
我希望有人瞭解我的問題,感謝每一個幫助。
爲什麼不使用searchlogic或其他gem提供類似的功能,並在params中傳遞過濾條件,而不觸及路由? – socjopata
我沒有使用寶石,因爲我需要像上面描述的URL(例如polls/technology/top,它返回技術類別中頂級民意調查的列表)。我的方法是使用鏈接(這將調用我的過濾器控制器)進行過濾,並且沒有搜索表單(它們正在像URL中的「?category = 1」那樣傳遞過濾條件)。不幸的是,我無法弄清楚,如何使用searchlogic gem創建這樣的URL,所以我決定這樣做^^ – sonnypgs
感謝您滿足我的好奇心:) – socjopata