2012-02-22 24 views
24

Flaş mesajların görüntülenmesi için en iyi uygulamanın hangisi olduğunu merak ediyorum. Bu iskele gibi bir şey kullanıyor gördüğüm iki ana yöntem uygulamanız başlığında böyle bir kodFlaş mesajlarının görüntülenmesi için en iyi uygulama yöntemi

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

veya yerleştirerek kodu üretti.

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

İlk yöntem ikincisi kod okunabilirliği artırır ve fazlalık ortadan kaldırır iken daha fazla esneklik katar bana görünür. Çoğu ray geliştiricisi tercih eden bir yöntem var mı? Bir yan soru olarak iskele uygulaması nasıl yapılır? Sadece flaş karmasına erişen bir yardımcı mı? Flash karmasını doğrudan kullanabildiğiniz zaman, yardımcısını kullanmanın zorluğunu neden giderin? Teşekkürler

cevap

55

ben bu şekilde yapıyorum: kısmi çağrılması

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

Bu, daha az kod satırı dışında herhangi bir özel yarar sağlıyor mu? Teşekkürler – Steve

+1

Evet, kod satırlarının sayısını azaltır ve kodun okunabilirliğini artırır. – zolter

+1

")" flash # {key} "gerekli değil, hata mesajı veriyor –

2

Neden ikinci yöntemi bir yardımcı işlevine koymayın, bu nedenle düzenlerde kod okunabilirliğini etkilemez?

+0

Sadece uygulama başlığımda bir kez kullanmak zorunda kaldım, ancak daha fazla dağınıklık varsa bunu koyarım ayrı bir yardımcıda. Bildirim yardımcısının nasıl çalıştığını biliyor musunuz, çünkü bu uyarı yardımcılarını kullanarak sizin için iskele zaten var. Teşekkürler – Steve

+0

Farklı projelerde birden çok kez kullanabilirsiniz, bu, csrf_mete_tags yardımcısı gibi her uygulamada bir kez kullandığınız tüm Rails yardımcıları gibidir. – fjyaniez

30

tutar senin application.html.erb bile temizleyici ..

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

.. ve kısmi de

sözü @zolter olduğumuz gibi birşey yapın:

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

Ama her şeyi bir kısmi içine koyabilirsiniz. Ben her zaman anladığım gibi, sadece temelde sadece bir şeyleri uygulamanız boyunca tekrarlanan bir kısma atmak istersiniz. Eğer büyük kod parçaları varsa, o zaman evet bunları kısmi bir kısma sokar ama bu böyle midir? Bilmiyorum ve bu aramayı yapmak için yeterli tecrübem yok ama imho bunun için yeni bir kısmi yapma noktasını görmüyorum. Teşekkürler – Steve

+3

[Kısmi kullanmanın bir yolu onları alt yordamların eşdeğeri olarak ele almaktır: ayrıntıları daha kolay izleyebilmeniz için bir görünümü dışa aktarmanın bir yolu olarak.] (Http://guides.rubyonrails.org /layouts_and_rendering.html#using-partials-to-simplify-views) – user664833

İlgili konular