DeviseのURLからモデル名を削除するにはどうすればよいですか?
つまり
users/sign_in -> /sign_in
users/sign_out -> /sign_out
users/registration/sign_up -> /sign_up
users/registration/edit -> /edit
DeviseのURLからモデル名を削除するにはどうすればよいですか?
つまり
users/sign_in -> /sign_in
users/sign_out -> /sign_out
users/registration/sign_up -> /sign_up
users/registration/edit -> /edit
これは、デバイスのREADME(https://github.com/plataformatec/devise)で説明されています。
Deviseにはデフォルトルートも付属しています。それらをカスタマイズする必要がある場合は、おそらくdevise_forメソッドを使用してカスタマイズできるはずです。I18nのパス名を変更する可能性を含め、:class_name、:path_prefixなどのいくつかのオプションを受け入れます。
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のドキュメントを確認してください。
より詳細なカスタマイズが必要な場合、たとえば「/ users /sign_in」以外に「/sign_in」も許可する必要がある場合は、ルートを通常どおりに作成し、ルーターのdevise_scopeブロックでラップするだけです。
devise_scope :user do
get "sign_in", :to => "devise/sessions#new"
end
このようにして、「/ sign_in」にアクセスするときにスコープ:userを使用するようにdeviseに指示します。devise_scopeもasとしてエイリアス化されていることに注意してください。また、devise_forにブロックを指定して、同じ動作を実現することもできます。
devise_for :users do
get "sign_in", :to => "devise/sessions#new"
end
お好きなものをお選びください!
(この質問が最初に提起されたとき、これはREADMEに含まれていなかった可能性があります。)
これを手動で行う方法は、Rails3は次のようになります。
match 'sign_in' => 'devise/sessions#new', :as => :sign_in
match 'sign_out' => 'devise/sessions#destroy', :as => :sign_out