【发布时间】:2014-10-08 17:43:29
【问题描述】:
我正在使用带有 rails 4.1.4 应用程序的 devise gem,并且需要在用户登录后立即在会话变量中添加一些自定义键值对。
我覆盖了以下方法 after_sign_in_path_for(resource)
after_sign_up_path_for(resource)
after_update_path_for(resource)
after_resetting_password_path_for(resource) 此处规定的方法:
https://github.com/plataformatec/devise/wiki/How-To:-redirect-to-a-specific-page-on-successful-sign-in
然而,在登录时,我多次输入after_sign_in_path_for,输出如下:
Started GET "/users/sign_in" for 127.0.0.1 at 2014-10-08 22:56:45 +0530
Processing by Devise::SessionsController#new as HTMLUser Load (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 ORDER BY "users"."id" ASC LIMIT 1Redirected to http://localhost:3000/users/sign_in
Filter chain halted as :require_no_authentication rendered or redirected
Completed 302 Found in 3ms (ActiveRecord: 0.6ms)
每次,在最终将我重定向到根路径之前。 (在将我重定向到根目录之前,浏览器会暂时显示重定向循环错误消息)。
编辑:
事实证明,由于我有 2 个不同的设计模型(用户和管理员),after_sign_in_path_for 中的这行代码:
sign_in_url = url_for(:action => 'new', :controller => 'sessions', :only_path => false, :protocol => 'http')
正在创建 URL "http://localhost:3000/admins/sign_in" 而不是 "http://localhost:3000/users/sign_in"
如何将 url_for 默认设置为 users 模型而不是 admin 模型?
谢谢!
【问题讨论】:
标签: redirect ruby-on-rails-4 devise