2010-11-20 29 views
7

Bir kullanıcı oturum açtıktan sonra, otomatik olarak önceki konumlarına yeniden yönlendiriyorsa, ancak bu asla gerçekleşmiyorsa, her zaman kök konumuna yeniden yönlendirir. Bunun için tasarlanan dokümanları okumaktan, bu işlevin sadece işe yaraması gerektiği görünüyor. Bunu bir şekilde yanlış kullanıyorum ve/veya konumu saklamak ve ne olursa olsun yönlendirmek için nasıl zorlayabilirim?devise sign_in_and_redirect hiç işe yaramıyor

http://rubydoc.info/github/plataformatec/devise/master/Devise/Controllers/Helpers#stored_location_for-instance_method

authentication = UserToken.find_by_provider_and_uid(omniauth['provider'], omniauth['uid']) 

if authentication 
    flash[:notice] = I18n.t "devise.omniauth_callbacks.success", :kind => omniauth['provider'] 
    sign_in_and_redirect(:user, authentication.user) 
else 
+0

Sadece, varsayılan işlevselliği almıyorum fark ettim çünkü authorize_user kullanmıyorum! konumu depolayan geri arama ... Peki konumu el ile nasıl oluşturabilirim? – holden

+0

Bunu nasıl çözdünüz? Https://github.com/plataformatec/devise/wiki/OmniAuth:-Evverview'i takip ediyorum: Devise ile bir rails 3.2.5 uygulaması için facebook girişini entegre edin. Sign_in_and_redirect yöntemi çalışmıyor :( – asitmoharna

+0

Aynı sorunu yaşadım, sadece bir manuel sign_in ve ayrı bir yönlendirme yaptım, sign_in_and_redirect kaynak kodunu kontrol edin sign_in @user redirect_to root_path – MatthewFord

cevap

4

this Google group page alt kısmına gidin ve yöntemi hazırlamak 'stored_location_for' geçersiz göz atın. El ile bir 'redirect_to' param ileterek yerini oluşturmasına izin gerekir

def stored_location_for(resource) 
    if current_user && params[:redirect_to] 
     flash[:notice] = "Congratulations, you're signed up!" 
     return params[:redirect_to] 
    end 
    super(resource) 
    end 

: Şöyle benim application_controller bunun bir uyarlanmış sürümü var.

İlgili konular