13

私は次のようにhttpsにリダイレクトしています:

redirect_to :protocol => 'https://', :status => :moved_permanently

ただし、パラメータはこのようには通過しません。私はこのように特定のパラメータを渡すことができます:

redirect_to :protocol => 'https://', :status => :moved_permanently, :param1 => params[:param1], :param2 => params[:param2]

各パラメーターを明示的に宣言するのではなく、URLのすべてのパラメーターを通過するようにするにはどうすればよいですか?

4

4 に答える 4

25

理解した:

redirect_to({:protocol => 'https://'}.merge(params), :flash => flash)

これにより、リダイレクトを通じてすべての URL パラメータが保持されます。

于 2012-06-28T21:56:07.137 に答える
5

paramsRails 4.2 以降では、ハッシュ全体を渡すと?controller=foo&action=barクエリ文字列に追加されます。代わりに、次のようにする必要があります。

redirect_to protocol: 'https', params: request.query_parameters
于 2016-10-14T18:47:34.653 に答える
1

これがコントローラーレベルでのみ必要な場合は、次を使用できます。

MyController < ApplicationController
  force_ssl
end

特定のアクションでのみ必要な場合は、:only または :except を使用できます。ドキュメントを参照してください:

http://api.rubyonrails.org/classes/ActionController/ForceSSL/ClassMethods.html

または、アプリ全体で ssl を使用するだけの場合 (rails 3.1 以降を想定):

# config/application.rb
module MyApp
  class Application < Rails::Application
    config.force_ssl = true
  end
end
于 2012-06-28T21:14:30.463 に答える
-1

次のように params を引数として渡すだけです。

redirect_to :protocol => 'http://', :status => :moved_permanently, :params => params 
于 2013-10-10T17:33:57.770 に答える