2014-08-29 2 views
0

Я не уверен, что я делаю неправильно: На мой контроллер сессий я следующее:Как разрешить маршрут не найден в Rails 4

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 используется вместо удаления по ссылке.

Любые идеи?

EDIT: целые мои маршруты файл:

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

Это поможет лучше понять вашу проблему, если вы указали нам содержимое вашего метода sign_out. Также вы не указали действия, которые вызывают вышеупомянутую ошибку. Это происходит, когда вы нажимаете ссылку «Выйти», верно? 'DELETE' требуется _JavaScript_ для включения. – jibiel

+0

@jibiel метод destroy выше (первый блок кода в msg). JS включен. Есть ли специальный js-файл, который мне нужно добавить? (Я новичок в Rails) – WagnerMatosUK

+0

Вы вызываете метод sign_out из метода SessionController # destroy. Я предполагаю, что 'sign_out' находится в' ApplicationController', если вы знаете, что делаете. – jibiel

ответ

1

Проблема была, что я случайно удалили //= require jquery_ujs из my application.js, чтобы браузеры не могли обрабатывать запрос DELETE и обрабатывались как GET.

Смежные вопросы