2009-03-02 27 views
8

मेरी js.erb फ़ाइलों के अधिकांश निचले भाग में कुछ इस तरह होती है:सूख js.erb फ़ाइलें (एक और js.erb फ़ाइल शामिल हैं)

$("#flash_message").html("<%= escape_javascript(content_tag(:p, flash[:note], :class => "note")) %>"); 
$("#flash_message").fadeOut(2000); 
$("#loading").remove(); 

मैं एक अलग फाइल में इन पंक्तियों स्थानांतरित करना चाहते हैं और फिर उस फ़ाइल को मेरी प्रत्येक js.erb फ़ाइलों से कॉल करें। क्या ऐसा कुछ संभव है?

सर्वश्रेष्ठ संबंध। Asbørn Morell

उत्तर

7

हाँ, आप एक app/views/shared/_flash_messages.js.rjs आंशिक, जिसे फिर आप कहीं से भी प्रदान कर सकते हैं बना सकते हैं (अन्य rjs partials से जैसे।)

आवेदनों की इन प्रकार में मेरे दृष्टिकोण इस प्रकार किया गया है:

  • गैर AJAX प्रतिक्रिया के लिए

    एक फ्लैश हो सकता है:

      01 लेआउट में
    • (उदा। layouts/application.erb), उदाहरण के लिए जोड़ें:,

        प्रत्येक rjs जवाब में
      • (जैसे controller/action.js.rjs):
        render :partial => 'shared/flash_messages.html.erb'
    • AJAX के जवाब है कि यह भी एक फ्लैश संदेश प्रदर्शित करने के लिए आवश्यकता हो सकती है के लिए

      , मैं निम्नलिखित rjs कोड जोड़ा जोड़ने जैसे:
      render :partial => 'shared/flash_messages.js.rjs'

जहां दो आंशिक फ्लैश प्रस्तुत करने के लिए आवश्यक हैं, तो flash.discard(:error) या flash.discard(:notice) पर उचित के रूप में कॉल करें।

नमूना app/views/shared/flash_messages.html.erb फ़ाइल:

<% if flash[:error] %> 
<div id="flash_message" class="error"><%= h(flash[:error]) %></div> 
<% flash.discard(:error) %> 
<% elsif flash[:notice] %> 
<div id="flash_message" class="notice"><%= h(flash[:notice]) %></div> 
<% flash.discard(:notice) %> 
<% else %> 
<div id="flash_message" style="display: none;" /> 
<% end %> 

नमूना app/views/shared/flash_messages.html.rjs फ़ाइल:

if !flash[:error].blank? 
    page['flash_message']. 
    replace_html(flash[:error]). 
    removeClassName('notice'). 
    addClassName('error'). 
    show() 
else 
    page['flash_message']. 
    replace_html(flash[:notice]). 
    removeClassName('error'). 
    addClassName('notice'). 
    show() 
end 
+0

ठनक यू। यह बिल्कुल उदाहरण था जिसकी मैं उम्मीद कर रहा था। मेरी js.erb फ़ाइलें अब बहुत साफ है;) – atmorell

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