Kullanıcılar neden Ruby on Rails görüntülemeleri için örnek değişkeni kullanmamayı öneriyor?


12

Neden örnek değişkenleri denetleyiciler ve görünümler arasında paylaşmanın iyi olmadığını duyuyorum. Ben hoşuma gitti çünkü ben hemen @ üzerinden denetleyiciden bir şey geliyor görebilirsiniz. Burada kontrolörlerde yardımcıları kullanmanın güzel bir yolunu görüyorum: http://www.stephencelis.com/2008/09/06/rails-controllers-views-and-variables.html . Ama bu kısım için cancan kullanıyorum.

Yanıtlar:


11

Fikir, rayların en iyi uygulamalarına konuldu: Örnek değişkenini yerel değişkenle değiştir

Temel olarak, çok sayıda kısmi kullanmazsanız veya yalnızca görünümdeki örnek değişkenlerini kullanarak her denetleyici yöntemi için tek bir düz görünüme sahip olursanız gerçekten sorun olmaz.

Bununla birlikte, çok sayıda kısmi kullanırsanız ve bu nedenle denetleyicinizde bildirilen çok sayıda örnek değişkeni varsa ... denetleyiciyi (örnek) değişkenlere açıkça değişken olarak geçirme alternatifini kullanırsanız daha az kafa karıştırıcı olabilir. Bu şekilde - kısmi GÖRÜNÜM'de çalışırken - çalışmak istediğiniz değişkene / nesneye, sayfanın oluşturulmasında yer alan 'tümü' kısmi ile paylaşılmayan tek bir açık referansınız olur.

Sonuçta, bunu tıpkı istediğiniz gibi halledebilirsiniz, kimse size bunu yapmaz. Ancak benim kişisel görüşüm, kısmi / görüşlerimde diğer değişkenlerle karıştırılamayan açık referanslara sahip olma fikrini sevmem.


5

globalReferansla iletilen değişkenlerden veya değişkenlerden benzerlik elde edebilir ve kısmi fonksiyonları işlev olarak düşünebilirsiniz. Yani example değişkeni kullanmak, pro ve con'larının tümü ile referans olarak işlevine geçirilen değişkene benzer:

# controller 
def index
  @var = 1
end

#view index.html.erb 
<%= @var %><br/>
<%= render 'foo' %><br/>
<%= @var %>

#partial _foo.html.erb
<%= @var = 2 %>

sonuç olacak

1
2
2

Böyle bir davranış isteyebilirsiniz, ancak çoğu durumda buna ihtiyacınız olmaz. Ve böcekleri bu şekilde tanıtmak daha kolay ve onları izlemek daha zordur. Bu nedenle bu önerilir, çünkü görünümlerde ve kısmi olarak kullanılan değişkenlerin kapsamlarını ayırır:

#view index.html.erb 
<%= @var %><br/>
<%= render 'foo', var: @var %><br/>
<%= @var %>

#partial _foo.html.erb
<%= var = 2 %>

sonuç:

1
2
1

2
Bu iyi bir nokta, değişkenlerin değişebilirliğini düşünmedim. Ben denetleyicinin görünümlere değişkenleri "sunan" varsayımı vardı ama örnek değişkenleri değiştirildikleri takdirde kesinlikle hata getirebilir.
Amala
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.