ruby on rails - software - Rails 4-pasar variable a parcial
ruby on rails tutorial (5)
Desde la api de Rails en PartialRender :
Renderizar el caso predeterminado
Si no va a utilizar ninguna de las opciones, como colecciones o diseños, también puede usar los valores predeterminados de las manos cortas de renderizar para hacer parciales.
Ejemplos:
# Instead of <%= render partial: "account" %>
<%= render "account" %>
# Instead of <%= render partial: "account", locals: { account: @buyer } %>
<%= render "account", account: @buyer %>
# @account.to_partial_path returns ''accounts/account'', so it can be used to replace:
# <%= render partial: "accounts/account", locals: { account: @account} %>
<%= render @account %>
# @posts is an array of Post instances, so every post record returns ''posts/post'' on `to_partial_path`,
# that''s why we can replace:
# <%= render partial: "posts/post", collection: @posts %>
<%= render @posts %>
Por lo tanto, puede usar pasar un size
variable local para representar de la siguiente manera:
<%= render @users, size: 50 %>
y luego _user.html.erb
en el _user.html.erb
parcial:
<li>
<%= gravatar_for user, size: size %>
<%= link_to user.name, user %>
</li>
Tenga en cuenta que size: size
es equivalente a :size => size
.
Estoy siguiendo el tutorial de Ruby on Rails y me he encontrado con un problema al intentar pasar variables a los parciales.
Mi _user
parcial es el siguiente
<li>
<%= gravatar_for user, size: 52 %>
<%= link_to user.name, user %>
</li>
Me gustaría pasar un número para el valor del tamaño. Lo intento de la siguiente manera sin suerte.
<%= render @users, :locals => {:size => 30} %>
¡Gracias por adelantado!
Necesitas la sintaxis parcial de renderizado completo si pasas locales
<%= render @users, :locals => {:size => 30} %>
Se convierte
<%= render :partial => ''users'', :collection => @users, :locals => {:size => 30} %>
O para usar la nueva sintaxis hash
<%= render partial: ''users'', collection: @users, locals: {size: 30} %>
Lo cual creo que es mucho más legible
Si está utilizando JavaScript para procesar, utilice escape_JavaScript("<%=render partial: partial_name, locals=>{@newval=>@oldval}%>");
Sintácticamente un poco diferente, pero se ve más limpio en mi opinión:
render ''my_partial'', locals: { title: "My awesome title" }
# not a big fan of the arrow key syntax
render ''my_partial'', :locals => { :title => "My awesome title" }
Ya sea
render partial: ''user'', locals: {size: 30}
O
render ''user'', size: 30
Para usar locals
, necesitas partial
. Sin el argumento partial
, puede enumerar las variables directamente (no dentro de los locals
)