Rails路由:如何根据模式匹配Rails路由

时间:2015-11-26 09:23:06

标签: ruby-on-rails

我有一些路线,如:

get 'route1'  => 'controller#route1', as: 'route1'
get 'route2'  => 'controller#route2', as: 'route2'
get 'route3'  => 'controller#route3', as: 'route3'

如何使用此模式自动匹配更多路线,例如4,5 ...

3 个答案:

答案 0 :(得分:1)

我不确定如何处理as部分路线。但是你可以用另一种方式编写这段代码。您可以创建一条路径来处理主路径末端的所有此类路由,如下所示:

get '/:route'  => 'controller#route_for_all_views'

在您的控制器中,您应该执行此route_for_all_views操作,该操作可以处理所有页面。

class SomeController < ApplicationController
  def route_for_all_views
    # handle your views and code with params[:route] here
  end
end

答案 1 :(得分:1)

我认为你可以这样做:

get "/:action", to: "controller", constraints: {action: /route\d+/}

请参阅dynamic segments了解路线。

(另请注意,如果您的控制器没有这种方法,这会引发异常,因此您可能需要使用类似method_missing的内容)

答案 2 :(得分:0)

这可能是一个混乱的解决方案,但你也可以这样做,这将为你提供*_path*_url网址助手,你使用:as选项。

%w{ route1 route2 route3 route4 route5 }.each do |route|
  get route, to: "controller##{route}", as: route
end