2016-03-21 34 views
0

Sadece aute için Devise ekledim ve URL'mden kullanıcıyı kapatabileceğim için :delete yerine :get kullanmak için Devise yapılandırmasını değiştirdim.Raylar rotaları senkronizasyon dışı görünüyor

/sites/veggies/vegj $ rake routes 
        Prefix Verb URI Pattern      Controller#Action 
     new_user_session GET /users/sign_in(.:format)   devise/sessions#new 
      user_session POST /users/sign_in(.:format)   devise/sessions#create 
    destroy_user_session GET /users/sign_out(.:format)   devise/sessions#destroy 

Ama benim app oturumu açmaya çalıştığınızda, ben /users/sign_outDELETE eşleştirilmiş diyen bir yönlendirme hatası alıyorum: Ben rake routes baktığınızda doğru olduğu anlaşılıyor.

enter image description here

Sadece bu çok temel bir sorundur belki raylar ile başlıyorum. Bir şeyleri yeniden yüklemem gerekiyormuş gibi geliyor, ama raylar/tırmıkların bu gibi güncellemeleri anında yaptıkları sanıyordum, değil mi?

+1

güncellemelerini GET alacak

<%= link_to "Sign Out", destroy_user_session_path, method: :delete %> 

isteği SİL alacak/ilklendiriciler yolları 'yer almaktadır @FrederickCheung –

+0

bir yeniden başlatma olmadan çekildiği değil config/routes.rb' .. başlatıcılarda değil! – siegy22

+0

ama kullanmak için ayarlamak için ayarlama: signouts için olsun config/initializers/devise.rb içinde var –

cevap

2

initializers/devise.rb için yapılan değişiklikten sonra sunucuyu yeniden başlatmanız gerekir. Otomatik olarak alınmazlar.

PS:

otomatik aldı varlık değil şeylerin pek bir şey yok, bunlar şunlardır (eğer bohça kurarım sonra)

  • oluşturulan dosyaları başladıktan sonra

    • Yeni taşlar çoğu sunucu (örneğin, yeni taş yüklü sunucu başladı mücevher jeneratör koştu)
    • initializers/*.rb dosyaları
    • config/application.rb, config/environment.rb

    Eklemeyi unuttuğum bazı ek dosyalar olabilir, ancak% 95'inde yalnızca yukarıdaki dosyaları değiştireceksiniz. varsayılan olarak olarak söylememize gerek bağlantısını tanımlayan ederken bunu bir delete request olduğunu işaret method: :delete kullanarak get request alacak böylece

  • +0

    Tamam, sanırım raylar tarafından neyin alındığını (ve ne olmadığını) öğrenmem gerekiyor. İyi referansları biliyor musunuz? – doub1ejack

    +0

    @ doub1ejack Cevabımı güncelledi. – Avdept

    +0

    Teşekkür @Avdept, bu gerçekten yararlı. – doub1ejack

    1

    Hata diyor ki, bir istekte bulunuyorsunuz. Bağlantınızda, silme yöntemini kullanmak istediğiniz belirtmeniz gerekir.

    <%= link_to "Log Out", destroy_user_session_path, method: :delete %>

    Eğer gemfile içinde JQuery-ujs olduğundan emin olun.

    +0

    'Rake yolları' için çıktıya göre 'DELETE' yöntemini kullanmam gerekmese de, yapmalı mıyım? "' destroy_user_session GET/users/sign_out (.: format) '" – doub1ejack

    +0

    Bu ekran görüntüsünüzün gösterdiği şey değil. Bunun için varsayımın varsayılan olduğunu ve siteyi yeniden düzenlediğini, ancak sitenizi yeniden başlattığınızı varsayıyorum. –

    +0

    Evet, sorum şu iki farklı rota aldım ('rake yolları' ekran görüntüsü vs). Görünüşe göre, neyin yeniden başlatılmasını gerektiren (ve yapmıyor) konusunda iyi bir kavrayışım yok. Rayların ne yaptığı ve otomatik algılamayacağının iyi bir dökümünü biliyorsanız, tüm kulaklarım:) – doub1ejack

    0

    destroy_user_session_path veya '/ kullanıcılar/sign_out' değil bir get isteğini silmek gerekir olduğunu.

    o O config isteği şeyler

    <%= link_to "Sign Out", destroy_user_session_path %> 
    
    İlgili konular