routing issue, matching a param as action

9 views
Skip to first unread message

Erwin

unread,
Oct 7, 2012, 5:07:10 AM10/7/12
to Ruby on Rails: Talk
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)' ...

Erwin

unread,
Oct 7, 2012, 11:14:14 AM10/7/12
to Ruby on Rails: Talk
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'

Ignacio Piantanida

unread,
Oct 7, 2012, 4:24:23 PM10/7/12
to rubyonra...@googlegroups.com
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 <yves_...@mac.com>
--
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 rubyonra...@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



Reply all
Reply to author
Forward
0 new messages