Ruby on rails 3 Rails3:设计登录后,路由到数据库中标识的文档
我的Rails3应用程序使用Desive进行身份验证 单击“登录”按钮后,我希望每个用户都被发送到给定的文档(该文档的id存储在数据库中,经常更改) Rails3中是否有处理此问题的最佳实践 我看到两种选择:Ruby on rails 3 Rails3:设计登录后,路由到数据库中标识的文档,ruby-on-rails-3,devise,rails-routing,Ruby On Rails 3,Devise,Rails Routing,我的Rails3应用程序使用Desive进行身份验证 单击“登录”按钮后,我希望每个用户都被发送到给定的文档(该文档的id存储在数据库中,经常更改) Rails3中是否有处理此问题的最佳实践 我看到两种选择: 创建一个巨大的页面,检查数据库并相应地呈现相应的文档 在app/controllers/application\u controller.rb中,检查数据库并相应地发送到正确的文档 哪一个最好?有什么更明智的想法吗?您可以在登录控制器(或应用程序控制器)中覆盖hook的路径中的after\
app/controllers/application\u controller.rb
中,检查数据库并相应地发送到正确的文档哪一个最好?有什么更明智的想法吗?您可以在登录控制器(或应用程序控制器)中覆盖hook的路径中的after\u sign\u,如下所示:
def after_sign_in_path_for(resource_or_scope)
if resource_or_scope.is_a?(User)
#Whatever url you need to here
else
super
end
end
这应该就够了。我只是把这段代码放在我的
app/controllers/application\u controller.rb
中,并将任意url行替换为“”,不幸的是,即使在重启rails服务器之后,用户也会被定向到这一行,这很奇怪,因为我就是这么做的,而且它是有效的。你能确认你的代码真的到达了url行吗?这个方法从来没有到达过!我在方法的_path_中的_sign_之后,在的开头添加了一行调试代码,它永远不会被打印出来。我在类应用程序控制器
中添加了您的方法,这不是正确的位置吗?我总是指向routes.rb
中定义的根页面,例如root:to=>“monkeys#new”
默认为根路径。ApplicationController就是放置这个的地方。我不认为它可以是私有方法,因为它是从子类调用的,所以请确保它是受保护的(或者我猜是公共的)方法。这里的文档说明,尽管它应该可以工作。我不明白为什么不是。