Ruby on rails 为不被呼叫而在注册后设计路径
我正在使用Desive和多个认证、管理和用户模型。在用户注册时,我想重定向到配置文件页面。(管理员是使用rake任务创建的,或通过管理员页面创建的,而不是通过注册过程创建的。) 我正在使用Ruby 2.0.0、Rails 4和Desive 3.1.0 根据StackOverflow和Desive GitHub页面上的帮助,这是我用来重定向的代码Ruby on rails 为不被呼叫而在注册后设计路径,ruby-on-rails,devise,Ruby On Rails,Devise,我正在使用Desive和多个认证、管理和用户模型。在用户注册时,我想重定向到配置文件页面。(管理员是使用rake任务创建的,或通过管理员页面创建的,而不是通过注册过程创建的。) 我正在使用Ruby 2.0.0、Rails 4和Desive 3.1.0 根据StackOverflow和Desive GitHub页面上的帮助,这是我用来重定向的代码 class ApplicationController < ActionController::Base protect_from_for
class ApplicationController < ActionController::Base
protect_from_forgery
before_filter :authenticate_user!
def after_sign_up_path_for(resource)
Rails.logger.info('ApplicationController: after_sign_up_path_for called')
'/profile'
end
def after_inactive_sign_up_path_for(resource)
Rails.logger.info('ApplicationController: after_inactive_sign_up_path_for called')
'/profile'
end
end
class ApplicationController
但是,当我在注册过程中运行时,似乎既没有调用after_sign_,也没有调用after_inactive_sign_方法,因为没有出现日志记录
现在我做了一些搜索,我似乎找不到我的代码有任何错误。我想知道这是否是由于我使用的多模型
有人能解释一下吗
如果您需要查看更多代码或其他信息,请询问 看一看。在它开始工作之前,您需要再做一些更改
您还应该覆盖应用程序控制器中的方法designe::Controllers::Helpers#storage_location_,以返回nil
。这也适用于
的路径中的签名后的
其次,对于
的注册路径之后的方法和对于
的非活动注册路径之后的方法应该是私有的。您不能在应用程序控制器中重写此方法。
您必须像这样覆盖设备控制器的注册:
class RegistrationsController < Devise::RegistrationsController
protected
def after_sign_up_path_for(resource)
# your path
end
end
类注册控制器
希望它能帮助您。阅读github上的Desive wiki
这里是相关链接
我遇到了与约翰·贾德类似的问题。通过阅读Rahul Singh好心指出的文档,我意识到我需要更新我的routes.rb
文件,因为Deviate不知道覆盖的Deviate::RegistrationController
下面是我的routes.rb
文件的内容:
devise_for :users
我将其替换为:
devise_for :users, controllers: { registrations: "registrations" }
这就解决了我的问题。谢谢你的帮助。不过有几件事。我不知道如何将此项实际设置为零?(作为#存储的#位置…解析为注释。)从链接上看,这似乎是您注销的过程,而不是注册。我还添加了私有和受保护。不高兴。谢谢Sunil,不过我试着换成了RegistrationsController,但运气不好。此外,Desive wiki指出这应该在ApplicationController中完成。还是不知道为什么这样不行,谢谢。这很有帮助。毕竟,我在路线上遗漏了:控制器=>{:注册=>“注册”}(在使用上述Sunils建议后)。干杯。截至2018年10月,Desive wiki页面是空白的??我相信这是更新的页面:谢谢@user2490003现在更新了。