【问题标题】:Ruby on Rails - Devise always redirect to the root_pathRuby on Rails - 设计总是重定向到 root_path
【发布时间】:2026-01-07 17:20:07
【问题描述】:

在我的 Ruby on Rails 应用程序中,我使用 devise 对“管理员”进行身份验证。

我只使用“Admin”模型,所以我修改了“routes.rb”文件来定义我的站点自定义路由

routes.rb

Rails.application.routes.draw do
  resources :contacts

  devise_for :admins

  #Personal Devise admin routes
  as :admin do

    #Session Block
    get "/login" => "devise/sessions#new",  :as => :admin_session_login
    delete "/logout" => "devise/sessions#destroy", :as => :admin_logout

    #Account Block
    get "/register" => "devise/registrations#new", :as => :admin_register
    get "/edit_account" => "devise/registrations#edit", :as => :admin_edit

  end
end

我保存了文件并重新启动了服务器,但是当我尝试导航到“/login”之类的自定义路由之一时,应用程序将我重定向到http://localhost:3000/

当我尝试导航到 /login 时,我还会发布服务器控制台日志:

控制台服务器日志

  Started GET "/login" for 127.0.0.1 at 2015-06-29 18:15:32 +0200
      ActiveRecord::SchemaMigration Load (0.4ms)  SELECT "schema_migrations".* FROM "schema_migrations"
    Processing by Devise::SessionsController#new as HTML
      Admin Load (0.3ms)  SELECT  "admins".* FROM "admins" WHERE "admins"."id" = ?  ORDER BY "admins"."id" ASC LIMIT 1  [["id", 1]]
    Redirected to http://localhost:3000/
    Filter chain halted as :require_no_authentication rendered or redirected
    Completed 302 Found in 46ms (ActiveRecord: 0.9ms

)

【问题讨论】:

标签: ruby-on-rails ruby devise


【解决方案1】:

我无法添加评论。 如果您已登录,您将始终被重定向到 root_path。您可以尝试其他途径找出答案。

【讨论】:

    【解决方案2】:

    要更改默认设计重定向路径,只需添加此方法
    在您的应用程序控制器中

    def after_sign_in_path_for(resource)
    
      yourpathname_path(resource)
    
    end
    

    【讨论】: