2012-03-28 15 views
7

bir ajax çağrıya cevap vermek. Günlük dosyası gösterilmektedir: js kodnasıl böyle bir before_filter yazmak before_filter

Rendered js_helpers/_popover.js.erb (0.1ms) 
Filter chain halted as :authenticate_user rendered or redirected 

fonksiyon popover bloğu gösteren flaş mesajı göstermektir. ama js kodu hiç de heyecanlı değil gibi görünüyor.

def authenticate_user 
    if request.xhr? 
    flash.now[:alert] = 'Error' 
    render :js => "window.location = '/users/sign_up'" 
    else 
    authenticate_user! 
    end 
end 

Bunun yerine, kayıt sayfasına yönlendirmek istiyorum:

Yani, ben yolumu değiştirdim. Bununla birlikte, hala problemler vardır.

isteği bir ajax arama, javascript kodu gel yürütmek veya yeni sayfaya redirect_to: Flaş

benim hedefe ulaşmak nasıl

çalışmıyor görünüyor. Her iki durumda da, bazı mesajları flaş halinde saklamalıyım.

Ayrıca, javascript kodu çok uzun bir dosyaya koymam gerekiyor. Oluşturmayı nasıl kullanabilirim: js bir dosyanın içinde javascript'i yürütmek için?

cevap

1

İstemcinin yürütmesi için javascript kodunu oluşturmaya çalışmak yerine, istemcinizin anlayacağı bir json yanıtı döndürmeniz gerektiğini düşünüyorum. senin ajax çağrıları, tuzak 403 durum kodu olarak

def authenticate_user 
    if request.xhr? 
    render :json => { alert: 'Error', redirect: sign_up_path }, :status => 403 
    else 
    authenticate_user! 
    end 
end 

, uyarı mesajı görüntüler ve verilen url yönlendirme. Bunu, bir 403 için standart bir kanca yapabilmelisiniz (ya da herhangi bir durum kodu en uygun gözüküyorsa); böylece, önceki_filtre olarak DRY olabilecektir.

0

Bence yönlendirme içinde inşa edilen rayların kullanılması sizin aradığınız şeydir.

def authenticate_user 
    if request.xhr? 
    flash[:alert] = 'Error' 
    redirect_to user_sign_up 
    else 
    authenticate_user! 
    end 
end 

Bu yönlendirmek ve flaş mesaj

doldurmalıdır Burada standart raylar AJAX çağrısı çalışmaz yönlendirme rails guides

+0

dan örnek. – sockmonk

İlgili konular