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])
end

def facebook

end

def twitter

end

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

2012/10/7 Erwin [email protected]