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

> 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'
>
>
> On 7 oct, 11:07, Erwin <[email protected]> wrote:
> > 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 ?
> >
> >
> >
> >
> >
> >
> >
> > >> match '/auth/:provider/callback', to:
> 'omniauth_callbacks#(:provider)' ...
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to