Haml:link_to vs button_to

时间:2012-04-29 17:35:45

标签: ruby-on-rails button hyperlink haml

根据我的理解,link_to用于get方法,button_to用于post方法。

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

4 个答案:

答案 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事件中发送。