【问题标题】:Haml: link_to vs button_to哈姆尔:link_to vs button_to
【发布时间】:2012-05-09 14:24:10
【问题描述】:

据我了解,link_to 用于 get 方法,button_to 用于 post 方法。

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

【问题讨论】:

    标签: ruby-on-rails button hyperlink haml


    【解决方案1】:

    你想的更简单。 这些方法是 Rails 助手,与 haml 没有任何关系。 是的,一种方法用于获取,另一种用于发布方法。如果您需要将任何数据发布到控制器,请使用button_to(例如在删除记录时)。否则,link_to 就足够了。

    此外,您可以使用:method参数使link_to发布数据:

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

    回答您的问题,请使用link_to

    【讨论】:

    • 这会将method: 'post' 而不是data-method: 'post' 添加到链接中
    【解决方案2】:

    应该使用链接将用户指向资源,例如文章。

    但您必须倾向于使用按钮来指向某个操作(例如编辑页面上的“创建”/“发送”)。如果这与您的界面不一致 - 将它们设置为链接。

    原因如下:您不能通过link_to 将您的用户指向任何非 GET 操作,如果他缺乏 javascript 支持。因此,在这种情况下,按钮是触发发送/销毁操作的唯一选项。

    如果您的链接指向的页面最终会导致资源修改(链接/按钮指向显示表单的编辑/创建页面),请随意使用两种方法,例如你的情况。

    【讨论】:

      【解决方案3】:

      如果你想简单地将用户发送到某个地方,那就是获取请求。所以在这种情况下你应该使用 link_to 。顺便说一句,如果您指定 :method,您可以将 link_to 用于发布请求和其他请求(也像 button_to)。例如:=link_to "some path", some_path, :method => :get

      【讨论】:

        【解决方案4】:

        #link_to#button_to之间的主要原理区别在于#link_to只是创建一个链接标签A,并在没有额外数据的情况下发出简单的AJAX请求,而#button_to创建一个@987654328 @ 带有自定义数据,因此该表单可用于向网络服务器发出扩展的 AJAX 请求。表单数据包括嵌入的 CSRF-token,用于对请求进行身份验证。对于#link_to,CSRF-token 必须序列化并在on_click 事件中发送。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-12
          • 1970-01-01
          • 2014-09-26
          相关资源
          最近更新 更多