10

据我了解,link_to用于获取方法,button_to用于发布方法。

另一方面,有人告诉我,使用 HTML5 语义,<button>可用于任何类型的可点击...嗯,按钮。如果我有一个可点击的按钮,可以将用户发送到要填写的表单,我应该创建一个button_to还是一个link_to

4

4 回答 4

17

你想的更简单。这些方法是 Rails 助手,与 haml 没有任何关系。是的,一种方法用于获取,另一种用于发布方法。如果您需要将任何数据发布到控制器,请使用button_to(例如在删除记录时)。否则,link_to就够了。

此外,您可以使用参数link_to发布数据::method

= link_to "Something", some_path, :method => :post

回答你的问题,使用link_to.

于 2012-04-29T17:49:07.217 回答
3

应该使用链接将用户指向资源,例如文章。

但是你必须倾向于使用按钮来指向一个动作(比如你的编辑页面上的“创建”/“发送”)。如果这与您的界面不一致 - 将它们设置为链接。

原因如下:如果用户缺乏 javascript 支持,您就不能将用户指向任何非 GET 操作。link_to因此,按钮是在这种情况下触发发送/销毁操作的唯一选项。

如果您的链接指向最终导致修改资源的页面(链接/按钮指向显示表单的编辑/创建页面),请随意使用这两种方法,就像您的情况一样。

于 2012-04-29T18:37:22.937 回答
2

如果您只想将用户发送到某个地方,那就是获取请求。所以在这种情况下你应该使用 link_to 。顺便说一句,如果您指定 :method,您可以将 link_to 用于发布请求和其他请求(例如 button_to)。例如:=link_to "some path", some_path, :method => :get

于 2012-04-29T17:50:23.223 回答
1

和 的主要原理区别在于#link_to#button_to#link_to只是创建一个链接标签A,并在没有额外数据的情况下发出简单的 AJAX 请求,而使用自定义数据#button_to创建一个FORM,因此可以使用该表单向网络服务器发出扩展的 AJAX 请求。表单数据包含嵌入式 CSRF-token,用于对请求进行身份验证。在#link_toCSRF-token 的情况下,必须序列化并在on_click事件中发送。

于 2015-11-29T06:39:20.730 回答