代码之家  ›  专栏  ›  技术社区  ›  Charlie Gevious

ruby on rails中的嵌套布局

  •  12
  • Charlie Gevious  · 技术社区  · 15 年前

    我是rails新手,正在尝试如何让嵌套布局工作;我假设它们有点像.net母版页?

    我已经跟踪了 this guide 我在布局目录中创建了application.erb.html,其中包含:

    <!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>
    

    并已将我的一个现有布局修改为:

    <% content_for :stylesheets do %>
    
    <% end -%>
    
    <% content_for :content do %>
      <p style="color: green"><%= flash[:notice] %></p>
      <%= yield %>
    <% end -%>
    
    <% render :file => 'layouts/application' %>
    

    当我转到浏览器中的某个视图时,绝对不会呈现任何内容;当我查看源代码时,没有HTML。

    我肯定我漏掉了一些基本的东西,有人能指出吗?!

    3 回复  |  直到 14 年前
        1
  •  29
  •   Charlie Gevious    15 年前

    我已经想出了解决办法,虽然不是 this article

    我已经换了这条线

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

    具有

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

    我不确定这篇文章是错了,还是我找到了错误的方法来修复它!请告诉我!

    干杯

        2
  •  4
  •   insane.dreamer    15 年前

    原来的文章有一个错误,你的解决方案是正确的。原因如下:

    包含在<%=%>中的erb(视图)中的ruby代码输出将添加到生成并发送到浏览器的html中。封装在<%%>中的Ruby代码的输出不会添加到HTML中。所以调用<%render:partial…%>没有效果,因为该ruby代码的结果(获取部分)没有添加到生成的html文件中。

    <%%>通常是为条件和循环保留的,如上面的示例所示。

        3
  •  0
  •   kbjerring    14 年前

    这里是 a different approach 可以方便地使用的嵌套布局。