Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在不影响Rails 4中的url的情况下,使用link_将params散列值设置为_Ruby On Rails_Params_Rails Routing - Fatal编程技术网

Ruby on rails 在不影响Rails 4中的url的情况下,使用link_将params散列值设置为

Ruby on rails 在不影响Rails 4中的url的情况下,使用link_将params散列值设置为,ruby-on-rails,params,rails-routing,Ruby On Rails,Params,Rails Routing,当我提交表单时,许多参数都被设置好了,而没有显示在url中 我想对link_做同样的事情: <%= link_to((purchase.paid ? 'yes' : 'no'), {action: :index, hidden_id: purchase.id}) %> 在回答这个问题时,我是否应该知道这两件事处理方式的区别?是关于get vs post请求,还是涉及到其他一些我没有掌握的原则?是的,这与get vs post请求有关 Get请求只能发送URL本身中的参数。post请

当我提交表单时,许多参数都被设置好了,而没有显示在url中

我想对link_做同样的事情:

<%= link_to((purchase.paid ? 'yes' : 'no'), {action: :index, hidden_id: purchase.id}) %>

在回答这个问题时,我是否应该知道这两件事处理方式的区别?是关于get vs post请求,还是涉及到其他一些我没有掌握的原则?

是的,这与get vs post请求有关

Get请求只能发送URL本身中的参数。post请求也可以发送到URL中包含参数的URL,但也可以说它可以发送“隐藏”的参数

因此,如果您的路由设置为允许,您可以向
http://localhost:3000/purchases?hidden_id=1
,但只有post请求才能在引擎盖下包含其他参数

关于这两种处理方式的区别,你还应该知道什么?对在大多数web框架中,当您看到服务器端的参数时,它们将被分为GET参数和POST参数。Rails不做这种区分,而是将它们放在同一个params散列中。(我觉得这很傻,但不管怎样)

此外,只需在浏览器中输入URL并按enter键即可发送get请求。post请求通常仅由在网页上提交表单的用户执行。因此,get请求并不意味着要更改数据库中的任何内容。它们应仅用于查看信息。所以,例如,如果你有一个按钮来删除一个资源(例如,一篇博客文章或其他东西),它应该通过post提交。(更多信息请访问)


最后,Rails在它的
link\u to
helper中提供了一个选项,允许您轻松地使用post请求进行“链接”。请参阅上的
方法
选项。这基本上是使用javascript来阻止单击链接的正常操作(这将是一个get请求),而是提交一个post请求。

谢谢,这正是我需要知道的。
root to: 'products#index'
resources :products 
resources :purchases
match ':controller/(:action/(:id))', controller: :shop, via: [:get,:post]