user3690603
user3690603

Reputation: 33

Rails Routes: How to match Rails routes based on a pattern

I have some routes like:

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

How can I match more routes automatically with this pattern, e.g. 4, 5...

Upvotes: 0

Views: 1038

Answers (3)

Nitin
Nitin

Reputation: 7366

I am not sure how you can handle as part of route. But you can write this code in another way. You can create a route that handle all such routes at the end of your primary route as below:

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

In your controller you should have this route_for_all_views action, which can handle all pages.

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

Upvotes: 2

user2536065
user2536065

Reputation:

This may be a messy solution, but you could also do something like this, which will give you the *_path and *_url url helpers, that you get when you use the :as option.

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

Upvotes: 0

Amr Noman
Amr Noman

Reputation: 2637

I think you can do something like this:

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

Please see dynamic segments for routes.

(also note that this would raise an exception if your controller doesn't have the method so you might need to use something like method_missing)

Upvotes: 1

Related Questions