2009-01-10 13 views
6

Raylarda, form yardımcılarının kullanılması tavsiye edilir mi? Dahili olarak, her şey düz html'ye kayıyor, o zaman neden html'yi doğrudan yazmıyorsunuz? Performans, doğrudan html yazımında yardımcılardan daha iyi olacaktır. Form yardımcılarını bir toplantı ya da geliştiricilerin izlemesi gereken bir şey gibi mi kullanıyor?Raylarda, form yardımcılarının kullanılıp kullanılmayacağı?

cevap

13

Performansı tanımlayın. Performansınız veya uygulamalarınız? Görünümlerinize yayılmış aynı rhtml snippet'iniz olduğunu varsayalım. Binlerce yere sahip olduğunu söyle. Belki de tam olarak'u aynı yerde bulamadınız. Artık müşteriniz bunu değiştirmek istiyor (belki farklı sunum sırası veya benzeri). Tüm görüşlerde bunu yapmak biraz zaman alacak, değil mi? Ve şansın ilk kez doğru olmayacaksın. Şansınız değişmek için kaçırdığınız yerlere gelmek için yıllarca hata raporu almaya devam edeceksiniz.

Müşteri, bu "performans" için çok para ödeyecek. Belki yüzlerce çalışma saati. İlke olarak KURU ilkesinden kaçınırsanız onbinlerce olabilir. Tüm sunucuları ve o çalışma saatleri için alabileceği tüm RAM'i düşünün. Her şeyi donanım üzerinde harcadıysa, uygulaması yüzlerce kat daha hızlı çalışabilir. Html snippet'lerini değiştirmeye çalışmak yerine, üzerinde çalıştığınız tüm eğlenceli şeyleri düşünün.

+1

Rails ve DRY'nin avantajlarından biri, siz ana hatlarıyla belirttiğiniz bir durumdur, bunu işaretlediğiniz için teşekkürler! Performans, görüntü oluşturma hızından daha fazlasıdır, aynı zamanda geliştirme hızıdır. –

+0

Mükemmel tartışma. – Zequez

4

Form yardımcılarının, DRY'nin (kendinizi tekrar etme) ilkesinin bir yansıması olduğunu düşünüyorum. Benzer kodları yapmak için aynı kodu yazmak yerine, bu kodu yeniden kullanmanıza olanak tanıyan bir form yardımcısı oluşturmaktır. Bu şekilde bir değişiklik yapmanız veya düzeltmeniz gerekiyorsa, yalnızca tek bir yerde yapmanız gerekir. Ayrıca, karmaşık bir eylemi form yardımcısı haline getirmek için kodunuzu daha kompakt ve okunabilir hale getirmeye de yardımcı olur. Aynı şey kısmi görüşler için de geçerlidir, ancak kısmi görüşler bir form yardımcısından daha karmaşık bir işareti kapsülleme eğilimindedir.

3

Form yardımcıları, rayların modelinize dayalı formlar oluşturmasına izin vermeleri için özellikle kullanışlıdır.

Aşağıdaki kod

<% form_for :person, @person, :url => { :action => "create" } do |f| %> 
    <%= f.text_field :first_name %> 
    <%= f.text_field :last_name %> 
    <%= submit_tag 'Create' %> 
<% end %> 

bu html üretir

<form action="/persons/create" method="post"> 
    <input id="person_first_name" name="person[first_name]" size="30" type="text" /> 
    <input id="person_last_name" name="person[last_name]" size="30" type="text" /> 
    <input name="commit" type="submit" value="Create" /> 
</form> 

kendiniz html yazma, ama buna mecbur formu yardımcıları kullanarak olabilir: API belgeleri örnek vermek gerekirse daha az yazın ve rayların uygulanmasına daha az bağımlı hale getirin. Gönder düğmesine bastığınızda her zaman veriyi modelinize yazan bir form alırsınız. Raylı geliştiriciler, bunun uygulanmasını hiç değiştirmezse, otomatik olarak doğru html çıktısını yardımcılarınızdan alırsınız. Eğer html'yi elle yazmış olsaydınız, rayların iç işleyişindeki değişiklikleri yansıtmak için hepsini güncellemeniz gerekirdi.

+0

Yürütülmelidir. Yanıtınız için teşekkür ederiz. Ancak, bilmek istiyorum, performans açısından form yardımcılarını kullanmak ne kadar kötü? – Chirantan

1

Onun bir geliştirici o farklı ad id ihtiyacı varsa aynı sınıf, kimliği için ad ve bir giriş alanı için hiçbir değer sahip ve ayrıca, o <% = text_field_tag ​​"ad" yazmak zorunda değer verirken iyi görünüyor: değeri => "value",: id => "id",: class => "" class%> ve aynı html için olabilir < input type = "text" değer = "value" class = "class" name = "name" id = "id" /> şimdi havai 1. şimdi de biz de yazmak zorunda yardımcı o uzunluğunu dikkate html 2. içine ilk yardımcı değerlendirmek düşünüyorum: => 3. bazen kullanmayı unutuyorsunuz: ya da yanlışlıkla 'u tercih ederim, bu durumda html'yi olarak tercih ediyoruz. Ve sunucunuz çok fazla istek aldığından çok fazla istek alsa ve yanıt süresi artacaktır çünkü <% =% >