2012-02-22 17 views
24

मुझे आश्चर्य है कि फ़्लैश संदेशों को प्रदर्शित करने के लिए सबसे अच्छा अभ्यास क्या है। दो मुख्य तरीके मैंने देखा है इस पाड़ की तरह कुछ का उपयोग कर रहे अपने आवेदन शीर्षक में कोडफ्लैश संदेश प्रदर्शित करने का सर्वोत्तम अभ्यास तरीका

<p id="notice"><%= notice %></p> 

या इस तरह रखने कोड उत्पन्न।

<% if !flash.empty? %> 
    <div id="flash"> 
     <% flash.keys.each do |k| %> 
      <div class="<%= k %>"> 
       <%= flash[k] %> 
      </div> 
     <% end %> 
    </div> 
<% end %> 

यह मेरे लिए प्रतीत होता है कि पहली विधि और अधिक लचीलापन, जबकि दूसरा कोड पठनीयता में सुधार और अतिरेक समाप्त कहते हैं। क्या कोई तरीका है कि अधिकांश रेल डेवलपर्स पसंद करते हैं? एक साइड सवाल के रूप में मचान मंदी नोटिस कैसे करता है? क्या यह सिर्फ एक सहायक है जो फ्लैश हैश तक पहुंचता है? जब आप फ्लैश हैश का सीधे उपयोग कर सकते हैं तो सहायक का उपयोग करने की परेशानी क्यों हो सकती है? धन्यवाद

उत्तर

55

मैं इसे इस तरह से कर रहा हूँ:

<% flash.each do |key, value| %> 
    <%= content_tag :div, value, class: "flash #{key}" %> 
<% end %> 
+0

क्या यह कोड की कम लाइनों के अलावा कोई विशिष्ट लाभ प्रदान करता है? धन्यवाद – Steve

+1

हां, यह कोड लाइनों की संख्या को कम करता है और कोड की पठनीयता में सुधार करता है। – zolter

+1

")" फ्लैश # {कुंजी} "के बाद" जरूरी नहीं है, यह त्रुटि संदेश –

2

एक सहायक फ़ंक्शन पर दूसरी विधि क्यों न डालें, इसलिए यह लेआउट पर कोड पठनीयता को प्रभावित नहीं करता है?

+0

मुझे केवल अपने आवेदन शीर्षलेख में इसे एक बार उपयोग करना पड़ा था, लेकिन अगर यह अधिक अव्यवस्थित हो गया तो मुझे लगता है कि मैं रखूंगा यह एक अलग सहायक में। क्या आप जानते हैं कि नोटिस सहायक कैसे काम करता है, क्योंकि ऐसा लगता है कि मचान दिखता है कि यह नोटिस सहायक का उपयोग करके आपके लिए यह पहले से ही करता है। धन्यवाद – Steve

+0

आप विभिन्न परियोजनाओं पर एक से अधिक बार उपयोग कर सकते हैं, यह सभी रेल सहायतागार की तरह है जो आप प्रति आवेदन एक बार csrf_mete_tags सहायक के रूप में उपयोग करते हैं। – fjyaniez

30

एक आंशिक कॉलिंग रहता है अपने application.html.erb भी क्लीनर ..

<%= render 'shared/flash_messages' if !flash.empty? %> 

.. और आंशिक में क्या @zolter उल्लेख की तरह कुछ कार्य करें:

<div id="flash_messages"> 
    <% flash.each do |key, value| %> 
    <%= content_tag(:div, value, :class => "flash #{key}") %> 
    <% end %> 
</div> 
+2

लेकिन आप सब कुछ आंशिक रूप से रख सकते हैं। जैसा कि मैंने हमेशा आपको समझा है, मुख्य रूप से केवल चीजों को आंशिक रूप से फेंकना चाहते हैं जो आपके ऐप में दोहराया जाता है। यदि कोड के बड़े हिस्से हैं तो हां उन्हें आंशिक रूप से भी रखें लेकिन क्या यह इस तरह योग्य है? मुझे नहीं पता और मेरे पास उस कॉल को करने के लिए पर्याप्त अनुभव नहीं है लेकिन इमो मुझे इसके लिए एक नया आंशिक बनाने का मुद्दा नहीं दिख रहा है। धन्यवाद – Steve

+3

[आंशिक रूप से उपयोग करने का एक तरीका उन्हें सबराउटिन के बराबर माना जाता है: एक दृश्य के विवरण को स्थानांतरित करने के तरीके के रूप में ताकि आप समझ सकें कि अधिक आसानी से क्या हो रहा है।] (Http://guides.rubyonrails.org /layouts_and_rendering.html#using-partials-to-simplify-views) – user664833

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