rails devise, no route matches logout

lhdgriver picture lhdgriver · Jul 24, 2011 · Viewed 13.6k times · Source

Though there're lots of similar questions, i've searched for it for hours but still can not fix it.

Env rails 3.0.9 ruby 1.9.2 devise 1.4.2

I changed the default login url using:

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

And the http://localhost:3000/login works fine for me But I include

 = link_to 'sign_out', destroy_user_session_path, :method => :delete

in my application.haml, after i click it, it says that no route matchs "/logout" Why? Please help me.

Answer

vich picture vich · Aug 17, 2011

I had a nearly identical problem and thanks to SO fixed it quite easily (link to my question). First, make sure you have <%= javascript_include_tag :defaults %> in your layout file "application.html.erb."

Then, in your config -> initializers -> "devise.rb" file make sure it says:

config.sign_out_via = :delete

and your "sign_out" code destroy_user_session_path, :method => :delete should work.