繁体   English   中英

通过 link_to 发出带有附加参数的 POST 请求是否可以接受?

[英]Is making POST requests with additional parameters via link_to acceptable?

在 Rails 中创建链接发出 POST 请求很容易。 link_to 'Click me', some_path, :method =>:post类的东西。 这很好用......除非你需要传递额外的参数。因为没有办法从链接发出实际的 POST 请求,Rails 用 GET 请求伪造它,这意味着如果你尝试将额外的参数传递给some_path ,它将它构建到查询字符串中。 因此,当您将鼠标悬停时,您会得到一个如下所示的链接:

/some_path?foo=var&foo=bar[foo][bar]

通常这不会太糟糕,除非如果你有一个 controller 期待一些嵌套参数,它会变得非常丑陋。

所以我的问题是,这会打扰其他人,还是只是我?

我能想到的唯一解决方法是将 href 更改为# ,在附近添加一个隐藏的表单,并在链接中添加一个单击处理程序,以序列化表单并在单击链接时提交它。 这使得链接不优雅地退化,并且对于基本上相当于美学抱怨的东西来说是一项非常艰巨的工作。 但我对我的网址非常着迷。 有没有更简单的方法? 还是我只是疯了,应该只处理查询字符串中的参数?

web 是一个丑陋的地方,其中一件令人讨厌的事情是,如果不创建表单或做一些疯狂的 JavaScript 在后台处理它,就无法创建链接 POST。

它困扰着那些关心他们的 URL 是否整洁的人,事实上很少有人真正关心这个问题,但唯一可靠的解决方案是一个表单加上一个整洁的小 jQuery 扩展来处理触发器。

To avoid seeing an ugly URL in the browser, though, you can always make the request via AJAX, send back a URL, then redirect to that URL once the AJAX part is completed. 这使您有机会展示“提交”或“请求”类型的微调器。

像下面这样的东西怎么样:

<html>
<head>
<script>
function myOnClick() {
  // ... do custom ajax w/whatever parameters.
  alert("myOnClick()");
}
</script>
</head>
<body>
<a href="http://www.example.com/" onClick="myOnClick();return false;">link text</a>
</body>
</html>

浏览器会在状态栏中显示 href 值,但点击链接时实际调用的是myOnClick() function。 需要return false部分来防止浏览器处理href属性。

myOnClick() function 可以使用您想要的任何参数执行任何操作,例如 ajax 请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM