2

DeviseのURLからモデル名を削除するにはどうすればよいですか?

つまり

users/sign_in -> /sign_in
users/sign_out -> /sign_out
users/registration/sign_up -> /sign_up
users/registration/edit -> /edit
4

2 に答える 2

3

これは、デバイスの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に含まれていなかった可能性があります。)

于 2011-04-14T21:32:38.840 に答える
1

これを手動で行う方法は、Rails3は次のようになります。

match 'sign_in' => 'devise/sessions#new', :as => :sign_in
match 'sign_out' => 'devise/sessions#destroy', :as => :sign_out
于 2010-07-06T16:00:19.387 に答える