SORU
23 Mart 2010, Salı


Raylar: elimizde bir örnek değişkenleri gösterirler.

Ryan Bates'in nifty_scaffolding, örneğin, yapar

edit.html.erb

<%= render :partial => 'form' %>

yeni.html.erb

<%= render :partial => 'form' %>

_form.html.erb

<%= form_for @some_object_defined_in_action %>

Gizli devlet beni çok rahatsız ediyor, ben genellikle bunu yapmak için gibi

edit.html.erb

<%= render :partial => 'form', :locals => { :object => @my_object } %>

_form.html.erb

<%= form_for object %>

Hangisi daha iyi:a) elimizde bir örnek değişkenleri erişmek zorundayab) kısmi olması gereken değişkenleri geçirmeden?

B yürüttüğünü oldum) gibi geç, ama biraz zor bir durum ile karşılaştım:

some_action.html.erb

<% @dad.sons.each do |a_son| %>
<%= render :partial => 'partial', :locals => { :son => a_son } %>
<% end %>

_partial.html.erb

The son's name is <%= son.name %>
The dad's name is <%= son.dad.name %>

oğlu.baba bir veritabanı araması baba getirmek için yapar! @Erişmek için olurdu ya da geri gitmek olurdu babaa) elimizde bir örnek değişkenleri erişmek zorundaya @yerliler babamla geçirmek istiyorum, değiştirme oluşturma :kısmi için &;=% lt oluşturma :kısmi =>'kısmi, :' halk =>{baba =>@baba :oğlum =>a_son } %>ve nedense benim için değişkenleri kısmi bir avuç geçme beni çok rahatsız ediyor. Belki diğerleri de bu şekilde hissediyorum.

Umarım bu bana mantıklı geldi. Bu işin içine biraz anlayış gösterirsiniz... Teşekkürler!

CEVAP
23 Mart 2010, Salı


Rayların son sürümlerinde parçaları işlemek ve onlara yerli geçirmek için biraz daha kolay bir durumdur. Bunun yerine.

<%= render :partial => 'form', :locals => { :item => @item } %>

Bunu yapabilirsiniz.

<%= render 'form', :item => @item %>

Geriye uyumluluk tutmak için Şık İskele jeneratör bunu yapmak istemiyorum, ama gelecekteki bir sürümde bu değiştireceğim.

Kabul edilebilir elimizde bir örnek değişkenleri kullanmak için olsun. Olduğunu düşünüyorum. Tüm pratiklik, dezavantajı nedir? Kesinlikle işler eğer tutarlı değilse kontrolden çıkması, ama bu kuralları uygulamak için seviyorum.

  1. Hiç bir örnek değişkeni sadece kalıntılar arasında paylaşmak oluşturun. Genellikle bu sadece denetleyici Nesne kaynak paylaşımı olacak demektir.

  2. Kısmi kaynak adıyla aynı ise, <%= render @item %> ile yerel olarak geçmektedir.

  3. Eğer kısmi birden çok denetleyicileri arasında paylaşılan olacak o zaman sadece yerli kullanın.

Bu zaten benim için çalışıyor.

Bonus ipucu:bir kısmi içine bir sürü yerli kendinizi geçirmeden bulmak ve bazıları isteğe bağlı olmasını istiyorsanız, kısmi kılan yardımcı bir yöntem oluşturun. Sonra her zaman kısmi işleme için isteğe bağlı argümanlar ile temiz bir arayüz yapabilirsiniz yardımcı yöntem üzerinden gitmek.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • fufko

    fufko

    27 ŞUBAT 2006
  • Phandroid

    Phandroid

    26 Ocak 2009
  • Trevor Eckhart

    Trevor Eckha

    19 Aralık 2009