ruby-on-rails Haml:链接到vs按钮到

wz1wpwve  于 2023-03-13  发布在  Ruby
关注(0)|答案(5)|浏览(157)

据我所知,link_to用于get方法,button_to用于post方法。
另一方面,有人告诉我,在HTML5语义中,<button>可用于任何类型的可点击按钮,如果我有一个可点击按钮,它将用户发送到一个表单进行填写,我应该创建button_to还是link_to

wr98u20j

wr98u20j1#

这比你想象的要简单。这些方法是Rails的助手,与haml没有任何关系。是的,一个方法用于get,另一个用于post方法。如果你需要向控制器发布任何数据,使用button_to(例如删除记录时)。否则,link_to就足够了。
此外,您可以使用:method参数制作link_to过账数据:

= link_to "Something", some_path, :method => :post

回答您的问题,使用link_to

aiazj4mn

aiazj4mn2#

#link_to#button_to的主要区别在于#link_to只创建了一个链接标签A,并且在没有额外数据的情况下进行简单 AJAX 请求,而#button_to创建了一个具有自定义数据的FORM,因此表单可以用于向Web服务器进行扩展AJAX请求。表单数据包括嵌入式CSRF令牌。用于对请求进行身份验证。如果是#link_to,则必须将CSRF令牌序列化并在on_click事件中发送。

2exbekwf

2exbekwf3#

应该使用链接将用户指向某个资源,如文章。
但是你必须倾向于使用按钮来指向一个动作(比如编辑页面上的“创建”/“发送”)。如果这与你的界面不一致--把它们设计成链接。
原因如下:你不能通过link_to将用户指向任何非GET操作,如果他缺乏javascript支持的话,所以,按钮是在这种情况下触发发送/销毁操作的唯一选项。
如果您的链接指向一个最终导致修改资源的页面(链接/按钮指向一个显示表单的编辑/创建页面),请随意使用两种方法,就像您的情况一样。

h43kikqp

h43kikqp4#

如果你想简单地发送一个用户到某个地方,它是get request。所以在这种情况下你应该使用link_to。顺便说一下,如果你指定:method,你可以使用link_to来发送请求和其他请求(比如button_to)。例如:=link_to "some path", some_path, :method => :get

cpjpxq1n

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) %>

相关问题