Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 Rails3:设计登录后,路由到数据库中标识的文档_Ruby On Rails 3_Devise_Rails Routing - Fatal编程技术网

Ruby on rails 3 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\

我的Rails3应用程序使用Desive进行身份验证

单击“登录”按钮后,我希望每个用户都被发送到给定的文档(该文档的id存储在数据库中,经常更改)

Rails3中是否有处理此问题的最佳实践

我看到两种选择:

  • 创建一个巨大的页面,检查数据库并相应地呈现相应的文档

  • 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就是放置这个的地方。我不认为它可以是私有方法,因为它是从子类调用的,所以请确保它是受保护的(或者我猜是公共的)方法。这里的文档说明,尽管它应该可以工作。我不明白为什么不是。