Rails重定向到https,同时保留所有参数

Eri*_*ang 11 parameters ruby-on-rails

我正在重定向到https,如下所示:

redirect_to :protocol => 'https://', :status => :moved_permanently
Run Code Online (Sandbox Code Playgroud)

但是,参数不会像这样经过.我可以像这样传递特定的参数:

redirect_to :protocol => 'https://', :status => :moved_permanently, :param1 => params[:param1], :param2 => params[:param2]
Run Code Online (Sandbox Code Playgroud)

我如何才能使它只是通过url上的每个参数而不必显式声明每个参数?

Eri*_*ang 24

弄清楚了:

redirect_to({:protocol => 'https://'}.merge(params), :flash => flash)
Run Code Online (Sandbox Code Playgroud)

这将通过重定向保留所有URL参数.


sea*_*ley 5

对于 Rails 4.2 及更高版本,传递整个params哈希将导致添加?controller=foo&action=bar到查询字符串。相反,你应该这样做:

redirect_to protocol: 'https', params: request.query_parameters
Run Code Online (Sandbox Code Playgroud)