【问题标题】:Routing to the same action, sending a param based on route路由到同一个动作,根据路由发送参数
【发布时间】:2013-12-05 22:48:13
【问题描述】:

我有一系列网址,我想将它们全部路由到相同的操作,但每个网址都根据它们的内容传递一个参数。

通常,这很容易。我会做类似的事情

  url/:matcher => controller#action

而且我有 :matcher 可用。

但是,这是在根级别,我觉得有一条简单的/:matcher 路线是不对的,因为这会比我预期的要多得多。

有没有办法匹配,比如:

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

?

【问题讨论】:

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


    【解决方案1】:

    是的,你可以设置defaults:

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

    这会设置一个名为 route 的参数,该参数将在您的控制器中的 params[:route] 下可用。

    查看路线指南的defining defaults 部分。

    【讨论】:

    • 呸,这么简单。谢谢!
    【解决方案2】:

    使用约束:

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

    【讨论】:

    • 这行得通,谢谢。我将接受 CDub,因为它更符合我的目标,但这也有效,我感谢您的帮助:]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-18
    • 2013-06-14
    • 2017-07-06
    相关资源
    最近更新 更多