2011-08-04 30 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