路由到相同的操作,根据路由发送参数

时间:2013-12-05 22:48:13

标签: ruby-on-rails routing rails-routing

我有一系列网址,我希望所有网址都指向相同的操作,但每个网址都会根据它们的内容传递一个参数。

通常,这很容易。我只是做了像

这样的事情
  url/:matcher => controller#action

我有:匹配可用。

然而,这是在根本层面,我不认为有一条简单/:matcher的路线是正确的,因为这会比我想要的更多。

有没有办法匹配,例如:

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

2 个答案:

答案 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/