如何解决Rails 4中找不到的路由

时间:2014-08-29 13:19:58

标签: ruby-on-rails ruby-on-rails-4 routes

我不确定我做错了什么:在我的会话控制器上我有以下内容:

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

1 个答案:

答案 0 :(得分:1)

问题是我不小心从我的application.js中删除了//= require jquery_ujs,因此浏览器无法处理DELETE请求,而是以GET方式处理。