Ruby on rails 如何使用Desive gem创建用户根路径路由?

Ruby on rails 如何使用Desive gem创建用户根路径路由?,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我做了一次搜索,并在上面找到了答案,但被接受的答案似乎对我不起作用。基本上,Divise wiki说 登录用户后,确认帐户或更新 密码,Desive将查找要重定向的作用域根路径。对于 例如,对于:user资源,如果它是 存在,否则将使用默认的根路径 根据我对RoR的业余知识,我有一个叫做Player的设计模型,我在routes.rb文件中创建了以下语句 match 'player_root', to: 'pages#play', as: :player_root, via: :all …但这样

我做了一次搜索,并在上面找到了答案,但被接受的答案似乎对我不起作用。基本上,Divise wiki说

登录用户后,确认帐户或更新 密码,Desive将查找要重定向的作用域根路径。对于 例如,对于:user资源,如果它是 存在,否则将使用默认的根路径

根据我对RoR的业余知识,我有一个叫做Player的设计模型,我在routes.rb文件中创建了以下语句

match 'player_root', to: 'pages#play', as: :player_root, via: :all
…但这样一来,我的应用程序总是重定向到我的根路径,而不是我上面定义的玩家根路径。我做错了什么


提前感谢您的智慧!另外,我将Ruby 2与Rails 4一起使用。

据我所知,您正在尝试为
:players
指定
根路径

如果要执行此操作,您可以使用以下命令:

authenticated :players do
  root to: 'pages#play', as: :authenticated_root
end

这将为登录用户(玩家)提供自定义根路径。

据我所知,您正在尝试为
:players
指定
根路径

如果要执行此操作,您可以使用以下命令:

authenticated :players do
  root to: 'pages#play', as: :authenticated_root
end

这将为登录用户(玩家)提供自定义根路径。

据我所知,您正在尝试为
:players
指定
根路径

如果要执行此操作,您可以使用以下命令:

authenticated :players do
  root to: 'pages#play', as: :authenticated_root
end

这将为登录用户(玩家)提供自定义根路径。

据我所知,您正在尝试为
:players
指定
根路径

如果要执行此操作,您可以使用以下命令:

authenticated :players do
  root to: 'pages#play', as: :authenticated_root
end

这将为登录用户(玩家)提供自定义根路径。

除了安德烈·迪内科(Andrey Dieneko)
,您还有两个其他选项:

  • 使用未经验证的路径
  • 使用
    authenticate\u用户在控制器中
  • 这里的底线是,你可能没有正确地思考问题。如果经过身份验证,您可能正在尝试确定将用户带到何处。但是,您可能更适合实际使用控制器中的身份验证方法来测试用户是否已登录,如果未登录,则将其路由到登录页面:

    #config/routes.rb
    root to: "players#play"
    
    #app/controllers/players_controller.rb
    class PlayersController < ApplicationController
        before_action :authenticate_user!
    end
    
    --

    只有当你有像Facebook这样的应用程序时,这种方法才是最好的(即它没有“登录页”等)


    我认为安德烈的回答更贴切(特别是如果你有一个登录页)

    除了安德烈·迪内科
    ,你还有两个选择:

  • 使用未经验证的路径
  • 使用
    authenticate\u用户在控制器中
  • 这里的底线是,你可能没有正确地思考问题。如果经过身份验证,您可能正在尝试确定将用户带到何处。但是,您可能更适合实际使用控制器中的身份验证方法来测试用户是否已登录,如果未登录,则将其路由到登录页面:

    #config/routes.rb
    root to: "players#play"
    
    #app/controllers/players_controller.rb
    class PlayersController < ApplicationController
        before_action :authenticate_user!
    end
    
    --

    只有当你有像Facebook这样的应用程序时,这种方法才是最好的(即它没有“登录页”等)


    我认为安德烈的回答更贴切(特别是如果你有一个登录页)

    除了安德烈·迪内科
    ,你还有两个选择:

  • 使用未经验证的路径
  • 使用
    authenticate\u用户在控制器中
  • 这里的底线是,你可能没有正确地思考问题。如果经过身份验证,您可能正在尝试确定将用户带到何处。但是,您可能更适合实际使用控制器中的身份验证方法来测试用户是否已登录,如果未登录,则将其路由到登录页面:

    #config/routes.rb
    root to: "players#play"
    
    #app/controllers/players_controller.rb
    class PlayersController < ApplicationController
        before_action :authenticate_user!
    end
    
    --

    只有当你有像Facebook这样的应用程序时,这种方法才是最好的(即它没有“登录页”等)


    我认为安德烈的回答更贴切(特别是如果你有一个登录页)

    除了安德烈·迪内科
    ,你还有两个选择:

  • 使用未经验证的路径
  • 使用
    authenticate\u用户在控制器中
  • 这里的底线是,你可能没有正确地思考问题。如果经过身份验证,您可能正在尝试确定将用户带到何处。但是,您可能更适合实际使用控制器中的身份验证方法来测试用户是否已登录,如果未登录,则将其路由到登录页面:

    #config/routes.rb
    root to: "players#play"
    
    #app/controllers/players_controller.rb
    class PlayersController < ApplicationController
        before_action :authenticate_user!
    end
    
    --

    只有当你有像Facebook这样的应用程序时,这种方法才是最好的(即它没有“登录页”等)

    我认为安德烈的回答更贴切(特别是如果你有一个登录页)