2011-08-04 55 views
1

我的routes.rb文件路由具有麥粒腫是這樣的:問題與Rails的

 

    match 'tickets/:conditions'   => 'tickets#index', :as => :list_tickets, :constraints => {:conditions => /(\w+):(\w+)\/?/} 
    match 'tickets/sort::sort'   => 'tickets#index', :as => :root_sort 
    match 'tickets/mailbox::mailbox'  => 'tickets#index', :as => :view_mailbox 
    match 'tickets/status::status'  => 'tickets#index', :as => :view_status 
    match 'tickets/tag::tag'    => 'tickets#index', :via => :get, :as => :show_tag 

我想要得到它與像地址工作: http://localhost:3000/tickets/mailbox:1/sort:date 和倒過: http://localhost:3000/tickets/sort:date/mailbox:1

上午什麼我做錯了?

謝謝!

回答

0

對不起,我不能給你一個詳細和經過測試的答案(缺乏時間,此刻),但我想你可能會發現Rails Routing from the Outside In指南很有幫助,尤其是Route globbing

如果你寫(當心我還沒有測試此代碼!):

match 'tickets/*conditions' => 'tickets#index' 

然後在動作你可以解析params[:conditions]並應用必要的過濾器。 喜歡的東西:

params[:conditions].split('/').map {|c| c.split(':',2) } 
# => [ ['sort','date'], ['mailbox','1'] ] 

恐怕你不會對所有可能的條件命名路線,但我希望這不是很重要。我相信你會處理問題如何創建具有給定條件的路徑 - 請記住在必要的部分上調用CGI::escape