Rails: ¿Los parciales deben tener en cuenta las variables de instancia?
El ingenioso "andamio" de Ryan Bates, por ejemplo, hace esto
edit.html.erb
<%= render :partial => 'form' %>
new.html.erb
<%= render :partial => 'form' %>
_form.html.erb
<%= form_for @some_object_defined_in_action %>
Ese estado oculto me hace sentir incómodo, así que generalmente me gusta hacer esto
edit.html.erb
<%= render :partial => 'form', :locals => { :object => @my_object } %>
_form.html.erb
<%= form_for object %>
Entonces, cuál es mejor:a) tener variables de instancia de acceso parciales ob) pasando un parcial todas las variables que necesita?
Últimamente he estado optando por b), pero me encontré con un pequeño problema:
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 %>
¡son.dad hace una llamada a la base de datos para buscar al papá! Entonces tendría que acceder a @dad, que volvería aa) tener variables de instancia de acceso parciales o tendría que pasar @dad en locales, cambiando render: parcial a <% = render: partial => 'partial',: locals => {: dad => @dad,: son => a_son}%>, y por alguna razón, pasar un montón de vars a mi parcial me hace sentir incómodo. Quizás otros también se sientan así.
Esperemos que tenga sentido. Buscando una idea de todo esto ... ¡Gracias!