Rails: os parciais devem estar cientes das variáveis da instância?
Os nifty_scaffolding de Ryan Bates, por exemplo, fazem isso
edit.html.erb
<%= render :partial => 'form' %>
new.html.erb
<%= render :partial => 'form' %>
_form.html.erb
<%= form_for @some_object_defined_in_action %>
Esse estado oculto me deixa desconfortável, então geralmente gosto de fazer isso
edit.html.erb
<%= render :partial => 'form', :locals => { :object => @my_object } %>
_form.html.erb
<%= form_for object %>
Então, o que é melhor:a) ter parciais acessar variáveis de instância oub) passando parcial todas as variáveis necessárias?
Eu tenho optado por b) ultimamente, mas me deparei com um pouco de picles:
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 son.dad faz uma chamada no banco de dados para buscar o pai! Então, eu teria que acessar o @dad, que voltaria aa) ter parciais acessar variáveis de instância ou eu teria que passar @ pai em locais, alterando render: parcial para <% = render: parcial => 'parcial',: locais => {: dad => @ pai,: filho => a_son}%> e por alguma razão, passar um monte de vars para o meu parcial me deixa desconfortável. Talvez outros se sintam assim também.
Espero que isso faça algum sentido. Procurando algumas dicas sobre tudo isso ... Obrigado!