redirect_to を返して、追加のパラメーターを渡そうとしています。コントローラーにあるものは次のとおりです。
redirect_to(env['omniauth.origin'], :hello => "hello world")
これは URL に正しくリダイレクトされていますが、hello が渡されていません。アイデア?
redirect_to を返して、追加のパラメーターを渡そうとしています。コントローラーにあるものは次のとおりです。
redirect_to(env['omniauth.origin'], :hello => "hello world")
これは URL に正しくリダイレクトされていますが、hello が渡されていません。アイデア?
env['omniauth.origin']
文字列ですか?もしそうなら、私はこれがうまくいくとは思わない。パラメータを次のように追加してみてください。
redirect_to(env['omniauth.origin'] + "?hello=helloworld")
またはその趣旨の何か。
redirect_to
最終的にはを呼び出しurl_for
、toの引数url_for
が文字列の場合、その文字列はそのまま返されます。他のオプションは無視されます。
RailsのHash#to_query
方法を使用することをお勧めします。
redirect_to([env['omniauth.origin'], '?', params.to_query].join)
ルートにそのパスを追加し、パラメーターとして helloworld を渡します
redirect_to(route_in_file_path('helloworld'))
ApplicationController
クラスに関数を追加する
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
これで、次のことができます。
redirect_to update_uri(env['omniauth.origin'], :hello => "Hello World")