为什么Rails删除方法被路由到GET而不是DELETE?

时间:2013-08-30 15:44:59

标签: ruby-on-rails rails-routing

我收到了以下路由错误,我不知道为什么它没有路由到DELETE并转到GET

No route matches [GET] "/signout"

html.erb:

<%= link_to "Sign out", signout_path, method: "delete" %>

routes.rb中:

  match '/signout', to: 'sessions#destroy', via: :delete

我错过了什么命令?

2 个答案:

答案 0 :(得分:2)

您希望确保将jquery_ujs文件作为application.js清单的一部分加载。我相信Rails的旧版本称为rails_ujs


的application.js

// ...
//= require jquery_ujs
// ...

答案 1 :(得分:1)

检查您是否加载jquery-ujs并在浏览器中允许使用javascript。


<%= link_to "link", some_path, method: "delete" %>

将生成

<a href="some/path" data-method="delete">link</a>

单击该链接后,jquery-ujs将取消该操作,并取消从{data-method属性获取的make a delete request

<小时/> 来自link_to
:method =&gt; HTTP动词的符号 - 此修饰符将动态创建HTML表单并立即提交表单以使用指定的HTTP谓词进行处理。用于让链接在危险操作中执行POST操作非常有用,例如删除记录(搜索机器人可以在抓取您的站点时跟踪)。支持的动词有:post,:delete和:put。请注意如果用户禁用了JavaScript,请求将回退到使用GET