2011-06-01 14 views
7

मैं अपने नियंत्रकों में से एक में निम्नलिखित है:respond_with और फ्लैश सूचना

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 

इस कोड को एक अपवाद के साथ काम करता है। अगर मैं इस क्रिया को/किसी प्रकार का AJAX एक्सेस करता हूं, और उसके बाद किसी अन्य पृष्ठ पर जाता हूं, तो फ्लैश नोटिस प्रदर्शित हो जाएगा। प्रतिक्रिया करते समय मैं केवल फ्लैश नोटिस कैसे प्रदर्शित कर सकता हूं: html? मैंने सोचा कि शायद आप पास कर सकते हैं: नोटिस => "मेरा फ्लैश" respond_with पर कोई भाग्य नहीं है। नीचे के रूप में

उत्तर

9

आप की तरह शर्त रख सकते हैं:,

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

इसके अलावा, अगर किसी दिन आप तय करेगा उपयोग उत्पन्न नोटिस AJAX अनुरोध का जवाब जब आप flash.discard उपयोग कर सकते हैं फ्लैश साफ़ करने के लिए।

-1

उपयोग:

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

यही मेरे पास पहले था, लेकिन मैं 'respond_to' से अधिक संघनित' respond_with' पर जाने की कोशिश कर रहा हूं। –

+0

डाउनवोट करना था क्योंकि उत्तर 'respond_with' का उपयोग करने के संबंध में पोस्टर्स प्रश्न का उत्तर देने का प्रयास नहीं करता है। –

+0

@LesterPeabody लेकिन यह एक समाधान प्रदान करता है। और सवाल जवाब के बाद संपादित किया गया हो सकता है (हालांकि मुझे यकीन नहीं है कि 2 साल पहले क्या हुआ)। मुझे डाउनवोट के साथ कोई समस्या नहीं है, लेकिन व्यायाम करने से पहले शायद अधिक विचार लागू किया जाना चाहिए। –

संबंधित मुद्दे