2012-04-05 12 views

Antwort

5

Ist env['omniauth.origin'] ein String? Wenn ja, kann das nicht funktionieren. Sie könnten versuchen, die Parameter hinzufügen, wie:

redirect_to(env['omniauth.origin'] + "?hello=helloworld") 

oder etwas in diesem Sinne.

1

einen Weg für sie in Ihre Routen hinzufügen und die Hello World als Parameter

redirect_to(route_in_file_path('helloworld')) 
4

redirect_to schließlich url_for Anrufe übergeben, und wenn das Argument zu url_for ein String ist, gibt sie einfach, dass String unberührt. Es ignoriert alle anderen Optionen.

würde ich vorschlagen, einfach Rails des Hash#to_query Methode:

redirect_to([env['omniauth.origin'], '?', params.to_query].join) 
+1

Ich sollte beachten, dass dies nur eine gültige URL generieren wird, wenn 'env ['omniauth.origin']' nicht bereits eine Abfragezeichenfolge enthält. – Brandan

0

Fügen Sie eine Funktion zu ApplicationController Klasse

class ApplicationController < ActionController::Base  
    def update_uri(url, opt={}) 
    URI(url).tap do |u| 
     u.query = [u.query, opt.map{ |k, v| "#{k}=#{URI.encode(v)}" }]. 
       compact.join("&") 
    end 
    end 
    helper_method :update_uri # expose the controller method as helper 
end 

Jetzt können Sie wie folgt vorgehen:

redirect_to update_uri(env['omniauth.origin'], :hello => "Hello World") 
Verwandte Themen