2009-11-13 29 views
10

Railsのアップグレードのために、redirect_toが既に使用されていました。私は実験してきました。私はredirect_toを使ってURLパラメータを追加したRails以外のページにユーザーを送る方法は見つけられません。これまでは、単純に:クエリパラメータでredirect_toをRails以外のURLに使用するにはどうすればよいですか?

redirect_to "http://www.web.com/myurl" "parm" 

が動作していました - URLに「parm」が追加され、複数のparmsが正しく処理されました。それはもはやケースではないので、これを行う新しい/より良い方法があるのだろうかと思っていました。ドキュメントには、ハッシュを含むことはうまくいくはずですが、そうではありません。

redirect_to ("http://www.web.com/myurl", :parm => "foo") 
redirect_to ("http://www.web.com/myurl", { :parm => "foo" }) 

いずれも動作しません。手動でURL文字列を作成するとうまくいきますが、誰かがこの作業をより良い方法にするための呪文を持っていますか?

答えて

3

documentationによれば、url_forで認識されないパラメータはすべてルートモジュールに渡されるため、理論上は、パラメータがデフォルトのものより優先されない限り、コードは機能するはずです。このことができます

redirect_to 'http://www.web.com/myurl', :overwrite_params => { :parm => 'foo' } 

希望を:

しかし、あなたはおそらく渡すことができ:overwrite_paramsハッシュがあります。 Railsの5.0と、これが最も簡単な解決策であることが判明実行

+0

これは機能しません。文字列は直接使用されます。 – deepak

+0

@deepakどのバージョンのRailsを使用していますか?物事はかなり変化している可能性が2009年以来:-) –

+1

は、レール3.2.8で試した最新の安定私は考えて – deepak

0

:私はホストを指定するときだった働いていた、このページに

args = { foo: 'bar' } 
redirect_to 'https://otherwebsite.com/path?' + args.to_query 

唯一の他のソリューションを(自分のポストにトファー・ファンジオのコメントを参照してください)しかし、元のURLが別のポートにある場合(通常は開発環境の場合)にポートを指定する必要があります。

関連する問題