2014-09-05 10 views
0

Я пытаюсь выяснить, почему моя ссылка на вывод не работает, чтобы правильно уничтожить сеанс пользователя.Нет совпадений в маршруте [DELETE] "/ signout"

Если я вручную перейду к localhost:3000/signout, он отлично работает - уничтожает сеанс. Но если я нажму ссылку на ссылку, я получаю ошибку No route matches [DELETE] "/signout".

Вот как я создаю мою ссылку:

<%= link_to "Sign out", signout_path, method: "delete" %> 

HTML-:

<a data-method="delete" href="/signout" rel="nofollow">Sign out</a> 

Мои маршруты Файл:

SampleApp::Application.routes.draw do 
    resources :users 

    match '/signup', to: 'users#new', via: 'get' 

    resources :sessions, only: [:new, :create, :destroy] 

    match '/signin', to: 'sessions#new', via: 'get' 
    match '/signout', to: 'sessions#destroy', via: 'get' 

Я предполагаю, что он должен делать с тем, как я Я создаю свою ссылку. Я пробовал несколько других вариантов, но все они, похоже, бросают ту же ошибку. Любая идея, где я ошибаюсь?

ответ

3

Вы должны сделать свой путь SignOut доступным через метод delete HTTP вместо get:

match '/signout', to: 'sessions#destroy', via: 'delete' 
+0

Это отлично работает. –

1

method: "delete" Удалите из ссылки: -

<%= link_to "Sign out", signout_path %> 
+0

Это работает, но я предполагаю, что ответ Марека, вероятно, лучший маршрут, поскольку он не должен быть через get? –

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