Я использую devise прямо сейчас и аутентифицируюсь с администраторами и пользователями (два разных типа входа). Все работает нормально, если я захожу в .../admins и .../users. Однако, когда я перехожу по URL-адресу /admins/sign_in, после входа он автоматически перенаправляет меня обратно на домашнюю страницу, а не на страницу /admins, как я хочу. Есть ли способ перенаправить его после URL-адреса /sign_in?
Странная ошибка в пути Devise после входа в систему с помощью /admins/sign_in, а не /admins
Ответы (2)
В routes.rb
убедитесь, что вы включили эти именованные пути.
map.user_root '/users/edit', :controller => 'users', :action => "edit"
map.admin_root '/admin/edit', :controller => 'users', :action => "edit"
Я делаю это, чтобы он перенаправлялся на настройки использования.
Обновлять
Я все еще на 2.3.8, поэтому для рельсов 3 вам нужно будет использовать это:
root :to => "home"
Вы можете найти его здесь: https://github.com/plataformatec/devise
Обновлять
На самом деле первый код, который я опубликовал, должен работать для всех версий рельсов. И простое перечисление корня по умолчанию является значением по умолчанию для всех ресурсов разработки.
block in <top (required)>': undefined local variable or method
map для #‹ActionDispatch::Routing::Mapper:0x00000100bba7a0› (NameError)
- person George Tang; 04.02.2011
Когда вы войдете в систему, devise запустит метод after_sign_in_path_for(resource_or_scope)
, чтобы определить, куда идти, по умолчанию этот метод будет искать путь admin_root, и если он не существует, он перенаправит пользователей на корневой путь. Другим вариантом было бы перезаписать этот метод. Пожалуйста, взгляните на мой ответ на этот вопрос для получения дополнительной информации. Детали.
Для получения дополнительной информации взгляните на разработать документацию.