繁体   English   中英

Ruby on Rails-设计总是重定向到root_path

[英]Ruby on Rails - Devise always redirect to the root_path

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

我仅使用“管理员”模型,所以我修改了“ 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

)

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

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

def after_sign_in_path_for(resource)

  yourpathname_path(resource)

end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM