Я не уверен, что я делаю неправильно: На мой контроллер сессий я следующее:Как разрешить маршрут не найден в 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
Это поможет лучше понять вашу проблему, если вы указали нам содержимое вашего метода sign_out. Также вы не указали действия, которые вызывают вышеупомянутую ошибку. Это происходит, когда вы нажимаете ссылку «Выйти», верно? 'DELETE' требуется _JavaScript_ для включения. – jibiel
@jibiel метод destroy выше (первый блок кода в msg). JS включен. Есть ли специальный js-файл, который мне нужно добавить? (Я новичок в Rails) – WagnerMatosUK
Вы вызываете метод sign_out из метода SessionController # destroy. Я предполагаю, что 'sign_out' находится в' ApplicationController', если вы знаете, что делаете. – jibiel