2009-08-24 57 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