Странный редирект после входа с Devise - PullRequest
2 голосов
/ 10 ноября 2011

У меня есть это приложение, в котором я использую Devise, и после входа в систему пользователь перенаправляется на пустую страницу с путем /users/sign_in.user.

Почему Devise перенаправляет на этот путь?Вот запись в журнале, которую я получаю:

Started POST "/users/sign_in.user" for 127.0.0.1 at 2011-11-10 15:56:03 -0200
  Processing by Users::SessionsController#create as 
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"ukqyLFgApCSybuIlVynPwj/xgdI/WuHLxoFxOsY4wgQ=", "user"=>{"email"=>"felipe.coury@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Entrar"}
  User Load (1.8ms)  SELECT `users`.* FROM `users` WHERE `users`.`email` = 'felipe.coury@gmail.com' LIMIT 1
   (0.2ms)  BEGIN
   (1.0ms)  UPDATE `users` SET `last_sign_in_at` = '2011-11-09 18:47:04', `current_sign_in_at` = '2011-11-10 17:56:04', `sign_in_count` = 14, `updated_at` = '2011-11-10 17:56:04' WHERE `users`.`id` = 1
   (0.3ms)  COMMIT
Completed 406 Not Acceptable in 112ms

Вот мой полный routes.rb файл:

MyApp::Application.routes.draw do
  root :to => "site#home"
  match 'biblioteca' => 'site#library', :as => :library

  devise_for :users, :controllers => { :sessions => "users/sessions" }
  devise_for :admin_users, ActiveAdmin::Devise.config

  ActiveAdmin.routes(self)

  resources :cursos
  resources :matriculas
  resources :modulo_statuses
end

Я пытался использовать after_sign_in_path_for в ApplicationController:

def after_sign_in_path_for(resource_or_scope)
  Rails.logger.info "***** LOGGED IN, GOING TO #{root_path}"
  root_path
end

Но запись в журнале даже не появляется.

Кто-нибудь знает, почему это происходит?

1 Ответ

6 голосов
/ 10 ноября 2011

Это, вероятно, происходит потому, что что-то вроде этого вызывается: user_session_path(user), и вам фактически не нужен пользователь в качестве аргумента, поэтому Rails воспринимает это как формат.Вероятно, это неправильно при вызове form_for в вашем представлении.after_sign_in_path_for не вызывается, потому что Rails не считает данный URL допустимым запросом (поэтому ответ 406 приемлем).

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