2011-06-01 25 views
7

benim denetleyicileri birinde şu var:respond_with & Flaş Bildirimi

def create 

    photo.user = current_user if current_user 
    flash[:notice] = "The photos was saved" if photo.save 
    respond_with photo, :location => photo_path(photo) 

end 

Bu kod bir istisna dışında çalışır. Eğer bu aksiyona bir çeşit AJAX ile erişir ve başka bir sayfayı ziyaret edersem flaş notu görüntülenir. Html ile yanıt verirken yalnızca flaş bildirimini nasıl görüntüleyebilirim? Belki bir tane bile geçebileceğinizi sanıyordum: "=" flaşım "respond_with'a ama şansa hayır. aşağıda

cevap

9

Sen gibi koşulunu koyabilirsiniz: AJAX isteğine yanıt verirken bir gün o kullanılması oluşturulan ihbar karar verecek olursa,

flash[:notice] = "The photos was saved" if photo.save && !request.xhr? 

Ayrıca sen flash.discard kullanabilirsiniz flaşı temizlemek için

-1

Kullanım:

respond_to do |format| 
    format.html { redirect_to photo_path(photo), :notice => 'The photos was saved') } 
    format.xml { render :xml => photo, :status => :created} 
end 
+0

Daha önce böyle yaşadım ama "response_to" ifadesinden daha yoğun "response_with" e geçmeye çalışıyorum. –

+0

Cevap reddetti çünkü cevap, "response_with" ifadesini kullanarak posterlerin sorusunu yanıtlamaya çalışmıyor. –

+0

@ LesterPeabody ama bir çözüm sağlar. Ve soru cevaptan sonra düzenlenmiş olabilir (2 yıl önce ne olduğundan emin değilim). Bir downvote ile ilgili bir sorunum yok, ancak egzersiz yapmadan önce muhtemelen daha fazla düşünülmesi gerekiyor. –