据我了解,link_to
用于获取方法,button_to
用于发布方法。
另一方面,有人告诉我,使用 HTML5 语义,<button>
可用于任何类型的可点击...嗯,按钮。如果我有一个可点击的按钮,可以将用户发送到要填写的表单,我应该创建一个button_to
还是一个link_to
?
据我了解,link_to
用于获取方法,button_to
用于发布方法。
另一方面,有人告诉我,使用 HTML5 语义,<button>
可用于任何类型的可点击...嗯,按钮。如果我有一个可点击的按钮,可以将用户发送到要填写的表单,我应该创建一个button_to
还是一个link_to
?
你想的更简单。这些方法是 Rails 助手,与 haml 没有任何关系。是的,一种方法用于获取,另一种用于发布方法。如果您需要将任何数据发布到控制器,请使用button_to
(例如在删除记录时)。否则,link_to
就够了。
此外,您可以使用参数link_to
发布数据::method
= link_to "Something", some_path, :method => :post
回答你的问题,使用link_to
.
您应该使用链接将用户指向资源,例如文章。
但是你必须倾向于使用按钮来指向一个动作(比如你的编辑页面上的“创建”/“发送”)。如果这与您的界面不一致 - 将它们设置为链接。
原因如下:如果用户缺乏 javascript 支持,您就不能将用户指向任何非 GET 操作。link_to
因此,按钮是在这种情况下触发发送/销毁操作的唯一选项。
如果您的链接指向最终导致修改资源的页面(链接/按钮指向显示表单的编辑/创建页面),请随意使用这两种方法,就像您的情况一样。
如果您只想将用户发送到某个地方,那就是获取请求。所以在这种情况下你应该使用 link_to 。顺便说一句,如果您指定 :method,您可以将 link_to 用于发布请求和其他请求(例如 button_to)。例如:=link_to "some path", some_path, :method => :get
和 的主要原理区别在于#link_to
,#button_to
它#link_to
只是创建一个链接标签A
,并在没有额外数据的情况下发出简单的 AJAX 请求,而使用自定义数据#button_to
创建一个FORM
,因此可以使用该表单向网络服务器发出扩展的 AJAX 请求。表单数据包含嵌入式 CSRF-token,用于对请求进行身份验证。在#link_to
CSRF-token 的情况下,必须序列化并在on_click
事件中发送。