2013-12-05 5 views
0

У меня есть ряд URL-адресов, на которые я хотел бы перейти к одному и тому же действию, но каждый из них передает параметр, основанный на том, что они есть.Маршрутизация к тому же действию, отправка параметра по маршруту

Обычно это было бы легко. Я бы просто сделал что-то вроде

url/:matcher => controller#action 

и у меня был бы доступный.

Однако, это на уровне корня, и я не чувствую себя правильно, имея маршрут просто /:matcher, так как это захватывало бы намного больше, чем я предполагаю.

Есть ли способ, чтобы соответствовать, например:

/myroute => 'controller#action' {param[:route] = 'myroute'} 

?

ответ

1

Да, вы можете установить defaults:

get '/myroute', to: 'controller#action', defaults: { route: 'myroute' } 
get '/myotherroute', to: 'controller#action', defaults: { route: 'myotherroute' } 

Это устанавливает параметр, называемый route, который будет доступен под params[:route] в контроллере.

Ознакомьтесь с разделом руководства по маршрутам defining defaults.

+0

Гах, так просто. Спасибо! –

1

Используйте ограничения:

get '/:matcher' => 'controller#action', matcher: /myroute/ 
+0

Это работает, спасибо. Я собираюсь принять CDub, потому что это больше того, что я пытался сделать, но это также работает, и я ценю помощь:] –

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