Haml:link_to vs button_to
据我所知, link_to
用于get方法, button_to
用于post方法。
另一方面,我被告知使用HTML5语义, 用于任何类型的可点击…好吧,按钮。 如果我有一个可点击按钮,将用户发送到表单填写,我应该创建一个
button_to
还是link_to
?
你想的更简单。 这些方法是Rails助手,与haml没有任何关系。 是的,一种方法是获取,另一种方法是post方法。 如果需要将任何数据发布到控制器,请使用button_to
(例如删除记录时)。 否则, link_to
就足够了。
此外,您可以使用:method
参数生成link_to
发布数据:
= link_to "Something", some_path, :method => :post
回答你的问题,请使用link_to
。
您应该使用链接将用户指向资源,例如文章。
但是你必须倾向于使用按钮来指向一个动作(比如编辑页面上的“创建”/“发送”)。 如果这与您的界面不一致 – 将它们设置为链接。
原因如下:如果缺少javascript支持, 您无法通过link_to
指向用户任何非GET操作。 因此,在这种情况下,按钮是使您的发送/销毁操作被触发的唯一选项。
如果您的链接指向最终导致修改资源的页面(链接/按钮到显示表单的编辑/创建页面),请随意使用这两种方法 ,就像您的情况一样。
如果您只想将用户发送到某个地方,那就是获取请求。 所以在这种情况下你应该使用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
,因此表单可以是用于向Web服务器发出扩展的AJAX请求。 表单数据包括嵌入式CSRF令牌,用于对请求进行身份validation。 如果是#link_to
CSRF-token必须进行serual化并发送on_click
事件。