Ваш первый пример:
map.getproduct '/getProduct', :controller => 'your_controller', :action => 'your_action'
В контроллере у вас будет catType и цвет в хэше params:
params[:catType]
=> 'toy'
params[:color]
=> 'red'
Есть ли лучший способ? Наверное, да, но это зависит от ваших потребностей. Если у вас всегда будут параметры catType и color, вы можете добавить маршрут следующим образом:
map.getproduct '/getProduct/:catType/:color', :controller => 'your_controller', :action => 'your_action'
Вы получите доступ к этим параметрам с помощью хэша params, как в предыдущем примере. И ваши URL будут выглядеть так:
www.myapp.com/getProduct/toy/red
Если ваши параметры могут измениться, вы можете использовать маршрутизацию:
map.getproduct '/getProduct/*query', :controller => 'your_controller', :action => 'your_action'
Тогда он будет перехватывать все запросы, которые имеют www.my.app.com/getProduct/...
в начале. Но у вас будет больше работы в контроллере. У вас будет доступ к query
с этим:
params[:query]
и для www.myapp.com/getProduct/color/red/catType/toy
это даст:
params[:query]
=> ['color', 'red', 'catType', 'toy]
Так что вы должны разобрать его вручную.