我不确定我做错了什么:在我的会话控制器上我有以下内容:
def destroy
sign_out
redirect_to root_url
end
在我的路线上,我有以下内容:
match '/signout', to: 'sessions#destroy', via: 'delete'
在退出的链接上:
<%= link_to content_tag(:span, 'Sign out'), signout_path, method: 'delete' %>
然而,我得到signout_path
错误[GET]的无路由匹配。如果我理解正确,问题是没有为GET
定义的路由,这是正确的。
我无法理解为什么使用GET
方法而不是根据链接删除。
有什么想法吗?
编辑:我的整个路线档案:
EDIT2:会话控制器的内容:
class SessionsController < ApplicationController
def new
end
def create
...
end
def destroy
sign_out
redirect_to root_url
end
end
路线:
Rails.application.routes.draw do
resources :users
resources :sessions, only: [:new, :create, :destroy]
resources :categories
resources :admin
get 'users/new'
root 'static_pages#home'
match '/signup', to: 'users#new', via: 'get'
match '/signin', to: 'sessions#new', via: 'get'
match '/signout', to: 'sessions#destroy', via: 'delete', as: 'signout'
match '/help', to: 'static_pages#help', via: 'get'
match '/contact', to: 'static_pages#contact', via: 'get'
match '/admin', to: 'admin#index', via: 'get'
end
答案 0 :(得分:1)
问题是我不小心从我的application.js中删除了//= require jquery_ujs
,因此浏览器无法处理DELETE请求,而是以GET方式处理。