2011-01-15 11 views
139

que tienen un bucle, como por ejemplo:¿Pasar una variable a un parcial, carriles 3?

<% @posts.each do |post| %> 
    <% render middle %> 
<% end %> 

Luego, en mi media parcial, ¿cómo se accede al puesto actual?

+0

Hola Elliot estoy usando esto en andamiaje estándar. Usando inside index.html.erb para renderizar _show.html.erb donde show partial contiene modal. Todo funciona bien, excepto que cuando presiono Mostrar enlace, muestra la misma identificación en lugar de mostrar diferentes ID. – learner

Respuesta

235

Prueba esto:

<% @posts.each do |post| %> 
    <%= render 'middle', :post => post %> 
<% end %> 

gusta esta tendrá una variable local post disponible dentro del parcial.

+18

necesita <%= %> etiquetas no <% %> o de lo contrario no se mostrará – Ryan

+0

Gracias, por supuesto, tiene razón. Corregido – polarblau

+4

Tenga en cuenta que necesitaría '<% = render 'middle',: post => publicar%>' para rails 3.1.x – Archonic

10

Reemplazar <%= render middle %> con <%= render middle, :post => post %>. Luego, en su parcial middle, puede acceder a la variable post.

14
<% @posts.each do |post| %> 
    <% render middle, :post => post %> 
<% end %> 

Ahora puede acceder a cargo de la variable local post en el parcial

124

Darle a la parcial como una variable local

<%= render :partial => 'middle', :locals => { :post => post } %> 

Por supuesto, los carriles también tiene un acceso directo para la prestación colecciones:

<%= render :partial => 'post', :collection => @posts %> 

En este caso llamará a la par puesto cial para todos los envíos con una variable 'post' locales

Incluso puede reproducir una plantilla espaciador entre cada poste:

<%= render :partial => 'post', :collection => @posts, :spacer_template => 'post_divider' %> 
+14

No sabía nada acerca de la opción: spacer_template, realmente agradable. ¡Gracias! –

+11

Tenga en cuenta que el hash: locals no es necesario cuando se utiliza Rails 3. Los argumentos hash se convierten en argumentos que se pasan al parcial. – superluminary

+4

Todavía necesito: hash locals para que funcione ... Estoy ejecutando 3.2.12 – mck

Cuestiones relacionadas