据我所知,link_to用于get方法,button_to用于post方法。另一方面,有人告诉我,在HTML5语义中,<button>可用于任何类型的可点击按钮,如果我有一个可点击按钮,它将用户发送到一个表单进行填写,我应该创建button_to还是link_to?
link_to
button_to
<button>
wr98u20j1#
这比你想象的要简单。这些方法是Rails的助手,与haml没有任何关系。是的,一个方法用于get,另一个用于post方法。如果你需要向控制器发布任何数据,使用button_to(例如删除记录时)。否则,link_to就足够了。此外,您可以使用:method参数制作link_to过账数据:
:method
= link_to "Something", some_path, :method => :post
回答您的问题,使用link_to。
aiazj4mn2#
#link_to和#button_to的主要区别在于#link_to只创建了一个链接标签A,并且在没有额外数据的情况下进行简单 AJAX 请求,而#button_to创建了一个具有自定义数据的FORM,因此表单可以用于向Web服务器进行扩展AJAX请求。表单数据包括嵌入式CSRF令牌。用于对请求进行身份验证。如果是#link_to,则必须将CSRF令牌序列化并在on_click事件中发送。
#link_to
#button_to
A
FORM
on_click
2exbekwf3#
您应该使用链接将用户指向某个资源,如文章。但是你必须倾向于使用按钮来指向一个动作(比如编辑页面上的“创建”/“发送”)。如果这与你的界面不一致--把它们设计成链接。原因如下:你不能通过link_to将用户指向任何非GET操作,如果他缺乏javascript支持的话,所以,按钮是在这种情况下触发发送/销毁操作的唯一选项。如果您的链接指向一个最终导致修改资源的页面(链接/按钮指向一个显示表单的编辑/创建页面),请随意使用两种方法,就像您的情况一样。
h43kikqp4#
如果你想简单地发送一个用户到某个地方,它是get request。所以在这种情况下你应该使用link_to。顺便说一下,如果你指定:method,你可以使用link_to来发送请求和其他请求(比如button_to)。例如:=link_to "some path", some_path, :method => :get
=link_to "some path", some_path, :method => :get
cpjpxq1n5#
针对导轨7进行了更新
从链接发出发布请求:link_to方法:
<%= link_to "Add #{product.name} to cart", line_items_path(product_id: product.id), data: {turbo_method: :post} %>
button_to方法:
<%= button_to "Add #{product.name} to cart", line_items_path(product_id: product.id) %>
5条答案
按热度按时间wr98u20j1#
这比你想象的要简单。这些方法是Rails的助手,与haml没有任何关系。是的,一个方法用于get,另一个用于post方法。如果你需要向控制器发布任何数据,使用
button_to
(例如删除记录时)。否则,link_to
就足够了。此外,您可以使用
:method
参数制作link_to
过账数据:回答您的问题,使用
link_to
。aiazj4mn2#
#link_to
和#button_to
的主要区别在于#link_to
只创建了一个链接标签A
,并且在没有额外数据的情况下进行简单 AJAX 请求,而#button_to
创建了一个具有自定义数据的FORM
,因此表单可以用于向Web服务器进行扩展AJAX请求。表单数据包括嵌入式CSRF令牌。用于对请求进行身份验证。如果是#link_to
,则必须将CSRF令牌序列化并在on_click
事件中发送。2exbekwf3#
您应该使用链接将用户指向某个资源,如文章。
但是你必须倾向于使用按钮来指向一个动作(比如编辑页面上的“创建”/“发送”)。如果这与你的界面不一致--把它们设计成链接。
原因如下:你不能通过
link_to
将用户指向任何非GET操作,如果他缺乏javascript支持的话,所以,按钮是在这种情况下触发发送/销毁操作的唯一选项。如果您的链接指向一个最终导致修改资源的页面(链接/按钮指向一个显示表单的编辑/创建页面),请随意使用两种方法,就像您的情况一样。
h43kikqp4#
如果你想简单地发送一个用户到某个地方,它是get request。所以在这种情况下你应该使用link_to。顺便说一下,如果你指定:method,你可以使用link_to来发送请求和其他请求(比如button_to)。例如:
=link_to "some path", some_path, :method => :get
cpjpxq1n5#
针对导轨7进行了更新
从链接发出发布请求:
link_to
方法:button_to
方法: