routing issue, matching a param as action

I have the following routes :

match '/auth/:provider/callback', to: 'omniauth_callbacks#create'

I can test the :provider in the create action ..

is there any way to directly match to an action with the :provider name ?

It seems in some cases I can use the redirect

   match '/auth/:provider/callback', :to => redirect {|params| "/ omniauth_callbacks/#{params[:provider]}" }

but not in this case , as the redirect will change the request , and I'll not be able to check for request.env["omniauth.auth"]

so I resolved to write one match for each :provider .   match '/auth/google_oauth2/callback', to: 'omniauth_callbacks#google_oauth2'   match '/auth/facebook/callback', to: 'omniauth_callbacks#facebook'   match '/auth/twitter/callback', to: 'omniauth_callbacks#twitter'

You could do something like this:

match ‘/auth/:provider/callback’, to: ‘omniauth_callbacks#all_callbacks’

class OmniauthCallbacksController def all_callbacks send(params[:provider])


def facebook … end

def twitter … end

def method_missing(method_name, *args, &block) #do some stuff end end