2011-07-24 12 views
10

Chociaż istnieje wiele podobnych pytań, szukałem go przez wiele godzin, ale wciąż nie mogę go naprawić.Wymyślaj szyny, nie ma tras wylogowania

Kop Szyny 3.0.9 Ruby 1.9.2 Devise 1.4.2

Zmieniłem adres domyślny Zaloguj się z:

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' } 

A http://localhost:3000/login działa dobrze dla mnie Ale to

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

w moim application.haml, po kliknięciu go, mówi s że żadna trasa nie pasuje "/ wyloguj" Dlaczego? Proszę, pomóż mi.

+0

Co znajduje się wyjście 'natarcia routes'? – Dogbert

+0

Czy próbowałeś googlować? http://stackoverflow.com/questions/6805491/ruby-on-rails-devise-http-0-0-0-03000-users-sign-out-problem/6805662#6805662 – bassneck

Odpowiedz

11

Miałem prawie identyczny problem i dzięki temu naprawiłem go dość łatwo (link to my question). Najpierw upewnij się, że masz <%= javascript_include_tag :defaults %> w swoim pliku układu "application.html.erb".

Następnie w config -> inicjalizatory -> "devise.rb" plik upewnij się, że mówi:

config.sign_out_via = :delete

a "sign_out" Kod destroy_user_session_path, :method => :delete powinno działać.

+1

I m użyciu rubin 1.9.2p180, Rails 3.1.0.rc4 i opracuj 1.4.2. Mam plik <% = javascript_include_tag "%" w moim pliku układu. i użycie <% = link_to 'Wyloguj', destroy_user_session_path,: method =>: delete%> Ale nadal to nie działa dla mnie – Sayuj

+0

W swoim pliku inicjalizacyjnym "devise.rb" masz 'config.sign_out_via =: delete' lub 'config.sign_out_via =: get'? Niedawno zaktualizowano sposób projektowania tras. Jeśli używasz metody: delete, musisz ustawić ścieżkę sign_out jako pierwszą opcję. – mmichael

+0

Mam ten sam problem. Mam go poprawnie skonfigurowany w devise.rb (ustawione na: delete) i link_to (: method =>: delete). Używam również JQuery. Nadal jednak otrzymuję żądanie "GET". Sprawdziłem również wygenerowany kod i widzę następujące dla metody link_to: Logout. –

4

Ustaw config.sign_out_via = :get w config/initializers/devise.rb, aby użyć następującego kodu do linku wylogowania.

<%= link_to "Sign Out", destroy_user_session_path %> 
+0

Daj, bo to mniej bezpieczne niż przy użyciu tokena post + csrf. – Bijan

5

Trochę późno na tej imprezie, ale tu jakąś pomoc z innego answer

Określ metodę:

<%= link_to "sign out", destroy_user_session_path, method: :delete %> 
Powiązane problemy