2009-04-12 13 views
12

Soy nuevo en los rieles y estoy tratando de encontrar la forma de hacer funcionar los diseños anidados; Supongo que se parecen un poco a las páginas maestras de .net.Diseños anidados en ruby ​​on rails

He seguido this guide y he creado un application.erb.html en mi directorio que contiene la disposición siguiente:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
    <meta http-equiv="content-type" content="text/html;charset=UTF-8" /> 
    <title><%= @page_title or 'Page Title' %></title> 
    <%= stylesheet_link_tag 'layout' %> 
    <style type="text/css"><%= yield :stylesheets %></style> 
</head> 
<body> 

<%= yield(:content) or yield %> 

</body> 
</html> 

y han modificado uno de mis diseños existentes para esto:

<% content_for :stylesheets do %> 

<% end -%> 

<% content_for :content do %> 
    <p style="color: green"><%= flash[:notice] %></p> 
    <%= yield %> 
<% end -%> 

<% render :file => 'layouts/application' %> 

Cuando voy a una de mis vistas en el navegador, no se reproduce absolutamente nada; cuando veo fuente no hay html.

Estoy seguro de que hay algo elemental que he echado de menos, ¿alguien puede señalarlo por favor?

+0

Posible duplicado de [Diseño Nivelado de Múltiples Niveles en Rieles 3] (http://stackoverflow.com/questions/6539239/multiple-level-nested-layout-in-rails-3) –

Respuesta

29

he trabajado a cabo la solución, aunque no es lo que ha dado en this article

he reemplazado esta línea

<% render :file => 'layouts/application' %> 

con

<%= render :file => 'layouts/application' %> 

No estoy seguro de si el artículo está mal, o he encontrado la manera incorrecta de arreglarlo! ¡Por favor hagamelo saber!

Saludos

+0

le dio un voto porque este rescató yo de la misma confusión. – gabe

+0

+1, también estaba confundido. – dfrankow

+0

mismo; Gracias. ha pasado más de un año y el error en la guía persiste. : | – unsorted

4

El artículo original ha habido un error y su solución es correcta. Este es el motivo:

La salida del código ruby ​​en un ERB (vista) que está encerrado en <% =%> se agrega al HTML que se genera y se envía al navegador. La salida del código ruby ​​que está encerrada en <%%> no se agrega al HTML. Entonces, llamar <% render: parcial ...%> no tiene ningún efecto ya que el resultado de ese código ruby ​​(recuperar el parcial) no se agrega al archivo HTML generado.

<%%> está generalmente reservado para condicionales y bucles, como lo ha hecho en el ejemplo anterior.