2009-08-24 60 views
0

考虑一个PersonController,它有一个list操作。用户可以选择列出所有人,或者只列出男性或女性;目前,要做到这一点,他们不得不去/people/m/people/f,对应路线指定路由中的参数

map.list_people "people/:type", 
    :conditions => { :method => :get }, 
    :requirements => { :type => /a|m|f/ }, 
    :defaults => { :type => 'a' } 

/people/a作品一样只是/people/,并列出所有的人)。

我想改变我的路由,这样我可以有两条路线,/males//females/(而不是people/:type),两者都将去PersonController#list(DRY - 就是BEING搜索的内容除了一个额外的参数,其他一切是相同的),但会固有地设置type - 有没有办法做到这一点?

回答

3
map.with_options(:controller => "people", :action => "index") do |people| 
    people.males 'males', :type => "m" 
    people.females 'females', :type => "f" 
end 

那么你应该能够做到males_pathmales_url来获取此路径,我相信你能猜到你做什么,以获得路径女性。

+0

完美,这正是我所期待的,但在路由指南中找不到它。谢谢! – 2009-08-24 19:15:56