2009-08-24 2 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 - в стороне от дополнительного параметра к тому, что идет поиск, все остальное идентичен), но по своей сути устанавливает type - есть ли способ сделать это?

ответ

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

Тогда вы должны быть в состоянии сделать males_path или males_url, чтобы получить путь для этого, и я уверен, что вы можете догадаться, что вы делаете, чтобы получить путь к самкам.

+0

Отлично, это именно то, что я искал, но не смог найти его в руководстве по маршрутизации. Благодаря! –

Смежные вопросы