2016-01-19 58 views
4

我想同時從這個gem ovvride我的設計路線和會話控制器。我該怎麼做呢 ?設計:同時覆蓋設計路線和控制器

我想過:

devise_for :admins, :skip => [:sessions], 
    controllers: { sessions: "admins/sessions" } 

    devise_scope :admin do 
    get 'login' => 'devise/sessions#new', :as => :new_admin_session 
    post 'login' => 'devise/sessions#create', :as => :admin_session 
    delete 'logout' => 'devise/sessions#destroy', :as => :destroy_admin_session 
    end 

,但我的路徑,換款,但控制器 - 不。我怎樣才能實現這個權利?

回答

1

如果指定controllers: { sessions: "admins/sessions" },這意味着你有一個在這條路徑被稱爲sessions_controller.rb文件:app/controllers/admins/sessions_controller.rb,而且它開頭:

module Admins 
    class SessionsController < Devise::SessionsController 

如果這是您希望您的應用使用的控制器,然後在devise_scope區塊中,您必須告訴它使用admins/sessions而不是devise/sessions,如下所示:

devise_scope :admin do 
    get 'login' => 'admins/sessions#new', :as => :new_admin_session 
    post 'login' => 'admins/sessions#create', :as => :admin_session 
    delete 'logout' => 'admins/sessions#destroy', :as => :destroy_admin_session 
end 
+0

謝謝,它的工作,只是在第二部分,我已經改變了'devise'到'管理員' – Vladislav

1

什麼是這樣的:

devise_for :admin, exclude: [:sessions] do 
    get '/login', to: 'sessions#new', as: :new_admin_session 
    post '/login', to: 'sessions#create', as: :admin_session 
    delete '/logout', to: 'sessions#destroy', as: :destroy_admin_session 
end 
+0

沒有,這是行不通的,有沒有get /登錄 – Vladislav

+0

它的工作只有改變'devise'到'admins' – Vladislav