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