1

I am getting, the following routing error, i am not sure why it is not routing to DELETE and goes to 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

What command am i missing?

4

2 回答 2

2

您要确保将jquery_ujs文件加载为application.js清单的一部分。我相信在旧版本的 Rails 中它被称为rails_ujs.


应用程序.js

// ...
//= require jquery_ujs
// ...
于 2013-08-30T16:07:16.007 回答
1

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


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

会产生

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

点击链接后,jquery-ujs 将取消操作并发出删除请求,取自 data-method 属性:


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

于 2013-08-30T16:02:17.813 回答