[ruby-on-rails] 將Devise Login設置為根頁面


Answers

devise_for :users

devise_scope :user do
  authenticated :user do
    root 'home#index', as: :authenticated_root
  end

  unauthenticated do
    root 'devise/sessions#new', as: :unauthenticated_root
  end
end

就像這樣,在Rails Rails 4.1.0.rc1上測試。

Question

我為我的路線使用以下代碼:

devise_for :user, 
  :as => '', 
  :path_names => { 
    :sign_in => "", 
    :sign_out => "logout", 
    :sign_up => "register" 
  }

但是當我退出並轉到/logout我收到以下錯誤:

沒有路由匹配{:action =>“new”,:controller =>“devise / sessions”}

如何設置根路徑為:sign_in action?




其中一些解決方案過於復雜。 只需使用你的Rails技能來打擊設計的優勢:

'get' 'users/root', to: 'users#root' get''users 'get' 'users/root', to: 'users#root'添加'get' 'users/root', to: 'users#root'到config / routes.rb。

在UsersController中執行以下操作:

def root
  if user_signed_in?
    redirect_to root_for_signed_in_user_path (or whatever)
  else
    redirect_to new_user_session_path
  end
end



我猜你有不同的用戶角色。 如果您這樣做,您必須向用戶資源添加這樣的範圍:

  devise_scope :user do
    get "/logout" => "devise/sessions#destroy"
  end

您可以在此處閱讀有關覆蓋設計路線的更多信息: https//github.com/plataformatec/devise/wiki/How-To :-Change-the-default-sign_in-and-sign_out-routes




(這是作為建議的編輯發布的,但應該是它自己的答案。我不知道它是否有意義。親愛的匿名編輯:隨意將此答案重新發佈為您自己的答案,並留下評論所以我會刪除這個副本。)

root :to => redirect("/users/login")





Related