2011-08-24 10 views
6

Estoy creando una aplicación con ruby ​​on rails donde tengo items/_item.html.erb. Dentro de la parcial hay una declaración de rendimiento para que pueda agregar contenido adicional según sea necesario. En este caso, deseo agregar un botón específico al ítem dependiendo de qué vista se llame parcial.Contenido de representación dentro de una vía parcial = rendimiento

Esto es lo que he tratado y hace que la parcial, pero no hace que el bloque:

_item.html.erb

<%= yield if block_given? %> 
<div> 
    <%= item.name %> 
</div> 

someview.html.erb

... 

<% render(:partial => 'items/item', :collection => current_user.items do %> 
    <%= "HELLO" %>  
<% end %> 

... 

También he intentado usar content_for y algunas otras cosas sin éxito. ¿Hay alguna manera de poder presentar contenido específico dentro de un rendimiento parcial a través de? Actualmente estoy usando Rails3

EDIT:

me he dado cuenta de que es la: hash de colección que hace que sea imposible insertar el bloque.

Ambos de estas piezas de trabajo código:

<%= render :layout => 'items/item' do %> 
     Hello world  
<% end %> 

<%= render :layout => 'items/item', :locals => {:item => current_user.items.first} do %> 
    Hello world  
<% end %> 

Esto significa que si hago un .Cada que podría lograr lo que quiero, pero sería código feo. Alguien sabe una forma de evitar esto?

Respuesta

4

content_for debería funcionar bien en este caso. Aquí está el código que comprobé dos veces localmente.

somewhere.html.erb

<% content_for :foobar do %> 
    fubar 
<% end %> 

_item.html.erb

<% if content_for? :foobar %> 
    <%= yield :foobar %> 
<% end %> 
+1

Cómo estás trabajando esto? Intenté configurar el código content_for dentro, arriba y abajo del renderizado, y aún no puedo ver el contenido que se está procesando con el parcial. ¿Es porque estoy usando una colección también? – roloenusa

+0

En _item.html.erb podemos usar content_for en lugar de yield '<% content_for: foobar if content_for? : foobar%> ' – rajkamal

+0

¿Existe la posibilidad de que arroje un ejemplo rápido de cómo se vería la llamada al renderizado? – roloenusa

Cuestiones relacionadas