2010-07-06 43 views
2

如何從Devise網址中刪除模型名稱?從Devise網址中刪除模型

users/sign_in -> /sign_in 
users/sign_out -> /sign_out 
users/registration/sign_up -> /sign_up 
users/registration/edit -> /edit 
+0

忘了提,在這個項目中,我運行Rails 3。 – Alfred 2010-07-06 15:42:10

回答

3

這是覆蓋在所述色器件自述(https://github.com/plataformatec/devise ):

Devise還附帶默認路由。 如果您需要自定義它們,您應該可以通過devise_for方法執行 。它 接受幾個選項,如 :CLASS_NAME,:串流中刪除等, 包括改變 路徑名I18N的可能性:

devise_for :users, :path => "usuarios", :path_names => { :sign_in => 'login', :sign_out => 'logout', :password => 'secret', :confirmation => 'verification', :unlock => 'unblock', :registration => 'register', :sign_up => 'cmon_let_me_in' } 

一定要檢查 devise_for文檔的詳細信息。

如果你有更深刻的 定製的需求,比如同時還 允許「/ sign_in」除了 「/用戶/ sign_in」,所有你需要做的 是正常創建您的路線和 他們包裝在 一個devise_scope塊路由器:

devise_scope :user do 
    get "sign_in", :to => "devise/sessions#new" 
    end 

這樣 你告訴設計使用範圍:用戶 當 「/ sign_in」 是訪問。通知 devise_scope也別名爲作爲和 你也可以給一個塊 devise_for,導致相同的 行爲:

devise_for :users do 
    get "sign_in", :to => "devise/sessions#new" 
    end 

隨意 選擇一個你喜歡!

(也許這是不是在自述時,這個問題最初提出的問題。)

1

手動執行此操作的方法是Rails 3的將是:

match 'sign_in' => 'devise/sessions#new', :as => :sign_in 
match 'sign_out' => 'devise/sessions#destroy', :as => :sign_out