#ruby-on-rails-3 #devise
#ruby-on-rails-3 #разработка
Вопрос:
Мои маршруты
devise_for :users
devise_for :admin_users, ActiveAdmin::Devise.config #I have also tried removing this for any conflicts
resources :users
Ссылка для выхода. Маршруты в /users/sign_out
порядке
<%= link_to "Logout", destroy_user_session_path, :method => :delete %>
Попытка выхода выдает ошибку:
Couldn't find User with id=sign_out
Если я затем удалю ресурс: users, я получу:
The action 'sign_out' could not be found for UsersController
Что не так? Точно такой же код работал с Rails 2.3.8 and
соответствующей Devise
версией
Вход в систему и т. Д. работает нормально.
Моя настройка:
- Ruby 1.9.2
- Rails 3.1.1.rc3
- Разработка 1.4.8
Ответ №1:
Прежде всего, использовать один и тот же путь для UsersController и Devise — не лучшая идея. Я бы предложил использовать путь типа ‘/ accounts’ для Devise.
Но это, вероятно, не является причиной вашей проблемы с выходом, как devise_for :users
это было раньше resources :users
в routes.rb. Похоже, причина в том, что, если в вопросе нет опечатки, после запятой нет destroy_user_session_path
. :method => :delete
будет интерпретироваться как параметр destroy_user_session_path
, если нет запятой.
Кроме того, убедитесь, что вы включили jquery и jquery_ujs в application.js , так как они необходимы для :method => :delete
работы.
Комментарии:
1. Да, это была опечатка. Вы имеете в виду так: devise_for:users,:path => «учетная запись» ? Затем я получаю сообщение об ошибке: маршрут не соответствует [GET] «/ account / sign_out». Rake routes говорит: destroy_user_session УДАЛИТЬ / аккаунт / выход (.:format) {:действие => «уничтожить», : контроллер =>»разработка / сеансы»}
2. @Frexuz если это была опечатка, и вы изменили путь, то вы либо не включаете jquery, либо jquery по какой-то причине не работает.
3. Вы правы. Я неправильно загрузил жемчужину rails jquery. Спасибо!