我有一系列网址,我希望所有网址都指向相同的操作,但每个网址都会根据它们的内容传递一个参数。
通常,这很容易。我只是做了像
这样的事情 url/:matcher => controller#action
我有:匹配可用。
然而,这是在根本层面,我不认为有一条简单/:matcher
的路线是正确的,因为这会比我想要的更多。
有没有办法匹配,例如:
/myroute => 'controller#action' {param[:route] = 'myroute'}
答案 0 :(得分:1)
是的,您可以设置defaults
:
get '/myroute', to: 'controller#action', defaults: { route: 'myroute' }
get '/myotherroute', to: 'controller#action', defaults: { route: 'myotherroute' }
这会设置一个名为route
的参数,该参数将在您的控制器中的params[:route]
下提供。
查看路线指南的defining defaults部分。
答案 1 :(得分:1)
使用约束:
get '/:matcher' => 'controller#action', matcher: /myroute/