Rails 3如何决定点击"link_to"生成的链接时将使用哪个HTTP动词?

Mis*_*hko 4 ruby-on-rails http-verbs http-method link-to ruby-on-rails-3

我有两个链接:

<%= link_to("Edit", edit_product_path(product.id)) %>
<%= link_to("Delete", product, :method => :delete) %>
Run Code Online (Sandbox Code Playgroud)

生成的链接是:

<a href="/products/81/edit">Edit</a>
<a href="/products/81" data-method="delete" rel="nofollow">Delete</a>
Run Code Online (Sandbox Code Playgroud)

单击同时打开Edit和打开时Delete,将GET使用该方法.

Rails如何决定使用哪种方法?

链接中的含义data-method="delete"rel="nofollow"含义是什么Delete

Sim*_*tti 7

浏览器通常支持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) %>
Run Code Online (Sandbox Code Playgroud)

除非指定,否则默认值为GET.

从Rails 3开始,Rails使用不引人注目的JavaScript来处理DELETE方法.它传递data-method属性中的HTTP谓词,这是一个HTML 5功能.

在您的情况下,它不起作用,因为您可能忘记包含JavaScript库(例如Prototype或jQuery)和Rails适配器.

确保您使用的是jQuery或Prototype,并且包含了rails.jsjavascript文件.另外,别忘了添加csrf_meta_tag.

<%= csrf_meta_tag %>
Run Code Online (Sandbox Code Playgroud)

如果你想学习移动,几个月前我在Rails 3中写了一篇关于Unobtrusive JavaScript的文章.