当点击由“link_to”生成的链接时,Rails 3如何决定使用哪个HTTP动词?

我有两个链接:
<%= link_to("Edit", edit_product_path(product.id)) %>
<%= link_to("Delete", product, :method => :delete) %>
生成的链接是:
<a href="/products/81/edit">Edit</a>
<a href="/products/81" data-method="delete" rel="nofollow">Delete</a>
单击
Edit
Delete
时,使用
GET
方法。 Rails如何决定使用哪种方法?
data-method="delete"
rel="nofollow"
Delete
链接中的含义是什么?     
已邀请:
浏览器通常支持GET和POST HTTP方法。为了模拟PUT和DELETE谓词,Rails在提交表单时会注入一个特殊的
_method
参数。 您可以通过传递
:method
选项指定要使用的方法,就像您一样。
<%= link_to("Action with DELETE", path_to_something, :method => :delete) %>
<%= link_to("Action with PUT", path_to_something, :method => :put) %>
除非指定,否则默认值为
GET
。 从Rails 3开始,Rails使用不引人注目的JavaScript来处理DELETE方法。它传递
data-method
属性中的HTTP谓词,这是一个HTML 5功能。 在您的情况下,它不起作用,因为您可能忘记包含JavaScript库(例如Prototype或jQuery)和Rails适配器。 确保您使用的是jQuery或Prototype,并且包含了
rails.js
javascript文件。 另外,不要忘记添加
csrf_meta_tag
<%= csrf_meta_tag %>
如果你想学习移动,几个月前我在Rails 3中写了一篇关于Unobtrusive JavaScript的文章。     
有趣。我可以确认link_to与“:method =>:delete”选项在默认支架中工作。但是,在尝试构建没有脚手架的项目时,我无法使link_to工作。 button_to没有问题,使用与link_to失败的相同参数。 在我的HEAD标签中,我有所需的javascript包括:
javascript_include_tag :defaults
csrf_meta_tag
很混乱。我无法弄清楚什么“秘密酱”脚手架发挥作用使link_to工作。虽然Rob断言link_to delete在Rails 3中不起作用,但技术上可能不准确,但我发现它几乎是准确的。谢谢Rob,我被困了几个小时,直到看到你的帖子。     
您无法在rails 3中使用链接进行删除 你需要使用button_to,例如。
<%= button_to("Delete", product, :method => :delete) %>
    

要回复问题请先登录注册