【问题标题】:better way to hide passed parameters in url than 'params.except'? [duplicate]在 url 中隐藏传递的参数比“params.except”更好的方法? [复制]
【发布时间】:2015-09-03 07:22:29
【问题描述】:

我真的很困惑 Rails 如何将参数传递给 GET 请求。 我有一个带有登录表单的 Rails 应用程序。如果用户想使用默认测试用户登录,他/她可以点击通过测试电子邮件和测试密码的链接。

以下效果很好:

<%= link_to "test login", login_path(:email => "test-email", :password => "test-password") %>

单击此按钮后,登录页面会加载预先填写的电子邮件和密码字段。

问题是,电子邮件和密码都会显示在 url 中。 昨天,这对我有用:

<%= link_to "test login", login_path(params.except(:email => "test-email", :password => "test-password")) %>

今天没改代码,我用params.except的时候参数不传。

那么,如何确保参数会被传递但不会显示在url中呢?

编辑: 问题解决了。看我的回答。

【问题讨论】:

  • GET 请求总是在 URL 中显示参数...因为您想使用默认用户名和密码单击然后创建自己的路由假设 (default_login) 并在该方法中使用默认值验证您的请求。
  • 好吧,如上所述,它已经为我工作了。使用params.except时,参数将被传递但不显示在url中(url:.../login?action=foo&amp;controller=bar。我没有改变它但它停止工作了。

标签: ruby-on-rails ruby url parameters


【解决方案1】:

我解决了。在我的routes.rb 中添加了以下内容:

get 'test_login' => 'sessions#new', :email => "the test email", :password => "the test password"

所以我可以打电话给&lt;%= link_to "test login", test_login_path %&gt; 这将传输默认的电子邮件和密码并预先填写登录表单,但 url 将只是 .../test_login

在我看来,这比params.except 聪明多了。

【讨论】:

  • 您知道使用动态值执行此操作的方法吗?其中:email:password 取决于变量。
猜你喜欢
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
  • 2019-03-02
  • 2018-06-29
  • 1970-01-01
相关资源
最近更新 更多