kol*_*rie 2 devise ruby-on-rails-3
我有这个应用程序,我使用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
Run Code Online (Sandbox Code Playgroud)
这是我的完整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
Run Code Online (Sandbox Code Playgroud)
我试着用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
Run Code Online (Sandbox Code Playgroud)
但是日志条目甚至没有出现.
有谁知道为什么会这样?
这可能正在发生,因为这样的事情被调用:user_session_path(user)并且您实际上不需要用户作为参数,因此Rails将其视为格式.form_for在您的登录视图中,这可能是错误的.after_sign_in_path_for没有被调用,因为Rails没有考虑给定的URL一个有效的请求(这就是为什么响应是406可接受的).