1

我正在使用 Sslrequirements.rb(并对其进行了修改以满足我的需要),现在当页面转到 HTTP 到 HTTPS 时,它会添加额外的参数。问题是如何保留正在传递的正确参数以及如何确保正在传递的控制器和操作名称不与 URL 一起使用。

当调用以下块时

redirect_to :protocol => "https://", :controller => controller_name.to_sym, :action => action_name.to_sym, :params => params

使用这些参数调用注册页面。

https://mydomain.com/signup?account=free&action=new&controller=users

如何摆脱调用的 URL &action=newcontroller=users

我正在使用 Rails 3.2.6。

4

3 回答 3

1

转换 to_sym 的行没有将字符串转换为

'动作名称'

尝试删除控制器名称,以便您的代码看起来像这样

redirect_to :protocol => "https://", :action => 'action_name', :params => [params:id]

根据此处的 rails 文档,重定向将您的第二个参数视为 URL 的状态代码。

于 2012-06-27T02:56:43.550 回答
1

这个怎么样...

redirect_to url_for params.merge({:protocol => 'https://'}).
  except(:controller_name, :action_name, ... )
于 2012-06-27T02:57:11.477 回答
0

经过大量研究,我发现:

request.query_parameters

这解决了这个问题。

于 2012-06-27T05:18:42.190 回答