Rails: Sollten Partialtypen Instanzvariablen kennen?

Ryan Bates' nifty_scaffolding, zum Beispiel, bedeutet dies,

Bearbeiten.html-Code.erb

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

neu.html-Code.erb

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

_form.html-Code.erb

<%= form_for @some_object_defined_in_action %>

Dass ausgeblendeten Zustand macht mir ein unangenehmes Gefühl, so dass ich in der Regel, wie dies zu tun

Bearbeiten.html-Code.erb

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

_form.html-Code.erb

<%= form_for object %>

Also, was ist besser: a) die partials Zugriff auf Instanz-Variablen oder b) die übergabe einer teilweise alle Variablen, die es braucht?

Ich habe die Entscheidung für b) als der spät, aber ich habe laufen in eine kleine Gurke:

some_action.html-Code.erb

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

_partial.html-Code.erb

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

Sohn.Papa macht eine Datenbank rufen Sie zum abrufen der Papa! Also ich würde entweder auf @dad, das würde gehen zurück zu a) die partials Zugriff auf Instanz-Variablen oder müsste ich pass @Papa einheimischen, ändern render :partial zu
<%= render :partial => 'teilweise', :locals => { :Vater => @Vater :Sohn => a_son } %>, und für einige Grund, vorbei an einer Reihe von vars für meine teilweise fühle ich mich unwohl. Vielleicht fühlen sich andere auch so.

Hoffentlich, dass machte Sinn. Auf der Suche nach einigen Einblick in diese ganze Sache... Danke!

Kommentar zu dem Problem - Öffnen
Ich versuche, die meisten meiner Teiltöne eingestellt, da die @vars Weg fällt, wie Globale vars und alle die falsch, die mit Ihnen geht, aber eine Zertifizierungsstelle verwenden Sie die @vars übrigens auch, was sinnvoll für Ihre app Kommentarautor: clyfe
Clyfe warum sollten Sie fühlen, wie die globals? Sie stammen aus dem Bereich innen Ihre Aktion in dem controller. Und Sie nicht tun sollten alles, was mit Ihnen in Ihren Ansichten oder Teiltöne anderes als Sie zu Lesen und zeigt Sie. Auch in der form - alles, was Sie tun, ist die Einnahme der input - alle die Einstellung erfolgt in der create-oder update-Aktion. Kommentarautor: konung

InformationsquelleAutor der Frage Alexandre | 2010-03-23

Schreibe einen Kommentar