<%= render :partial => 'partial/path', :locals => {:xyz => 'abc'} %>
vs.
<%= render :partial => 'partial/path', :object => @some_object %>
Ich denke, die erste macht eine lokale Variable mit dem Namen xyz
im Teil verfügbar und die zweite macht eine lokale Variable mit dem Namen object
im Teil verfügbar. Was ist der Unterschied? (Außerdem locals
erlaubt mehr als eine Variable)
quelle
Die zweite Form
render :partial => 'account', :object => @some_account
stellt sicher, dass die
account
Variable im Teil auf gesetzt wird@some_account
. Sie können die Variable mit der:as
Option umbenennen .Der größte Vorteil von
:locals
ist dasSie könnten also so etwas tun
render partial => 'some_view', :locals => { :user => account.user, :details => some_details_we_retrieved }
bei Bedarf eine klare Trennung möglich machen.
Der Nachteil des
:locals
Ansatzes ist, dass er ausführlicher und manchmal einfacher istrender :partial => 'account'
ist identisch mit
render :partial => 'account', :locals => {:account => @account }
Verwenden Sie also diejenige, die am besten zu Ihnen passt (oder wo sie am besten passt).
quelle
@account
Null ist,:object=>@account
wird das Konto im Teil nicht verfügbar gemacht. Beim Versuch, Folgendes zu tun, wird eine Fehlermeldung angezeigt :if account <do something>
. Wenn Sie nicht sicher sind, ob @account definiert wurde, verwenden Sie:locals => { :account=>@account }
Wenn Sie Rails 3+ verwenden, ist die Syntax noch einfacher:
# Instead of <%= render partial: "account", locals: { account: @buyer } %> <%= render 'account', account: @buyer %>
Quelle: Action View Partials
quelle
locals:
Schlüssel enthält.