Разработать ошибку выхода - PullRequest
8 голосов
/ 04 ноября 2011

Пройдя соответствующие уроки по разработке, я преодолел последнее препятствие.

Разработал следующий код для выхода из системы:

<%= link_to "Sign out", destroy_user_session_path %>

И маршрут появляется при выполнении rake routes

destroy_user_session DELETE     /users/sign_out(.:format)
{:action=>"destroy", :controller=>"devise/sessions"} 

Однако я получаю сообщение об ошибке:

Не удалось найти действие 'show' для UsersController

Есть идеи?

Ответы [ 2 ]

22 голосов
/ 04 ноября 2011

путь правильный, но если вы посмотрите внимательно, вы увидите, что это не запрос GET, а запрос DELETE, поэтому передайте метод:

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

Edit:

Это должно добавитьdata-method="delete" атрибут вашей ссылки.Проверьте это (посмотрите на сгенерированный HTML).Если атрибут присутствует и ничего не происходит, если вы щелкнете по этой ссылке, убедитесь, что вы включили файлы javascript по умолчанию в свой макет.В вашем макете должна быть строка типа:

<%= javascript_include_tag :defaults %>

.

>> Важно << </strong>: вы не можете набратьВыйдите из URL в вашу адресную строку и нажмите Enter, это не сработает, потому что это GET, а не DELETE запрос.Волшебство этого заключается в том, что помощник javascript подключится к событию «onclick» ссылки, а затем отправит скрытую форму (через POST) по адресу href URL-адреса, содержащего скрытое поле с именем _method сзначение "удалить".

Зачем все это?Это вопрос безопасности, иначе кто-то может перенаправить вас на страницу выхода из системы и просто выйти из системы, и все ваши несохраненные данные сеанса исчезнут ...

Если вы reeeeaaaallllyyy, вам нужен выход из системы через GET, добавьте это

config / initializers / devise.rb :

config.sign_out_via = :get

0 голосов
/ 08 августа 2018

Убедитесь, что в вашем application.js указан jquery как «// = require jquery». Поместите его поверх '// = require jquery_ujs' в application.js. После этого перезапустите сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...