代码之家  ›  专栏  ›  技术社区  ›  Kevin Sylvestre

轨道3.0.0部分布局

  •  0
  • Kevin Sylvestre  · 技术社区  · 15 年前

    我有一个使用每个元素的布局(包装在容器中)呈现的部分集合。但是,在呈现集合时,也会添加一个外部“容器”(尽管未指定布局,但它似乎会添加到每个呈现中)。

    例子:

    # index.html.erb
    <%= render :partial => 'sprockets' %>
    
    # _sprockets.html.erb
    <%= render :partial => 'sprocket', :layout => 'container' %>
    <%= render :partial => 'sprocket', :layout => 'container' %>
    <%= render :partial => 'sprocket', :layout => 'container' %>
    
    # _sprocket.html.erb
    ...
    
    # _container.html.erb
    <div class="container"><%= yield %></div>
    

    给予:

    <div class="sprocket"> 
      <div class="sprocket"> 
        ...
      </div> 
      <div class="sprocket"> 
        ...
      </div> 
      <div class="sprocket"> 
        ...
      </div> 
    </div> 
    

    我似乎记得在Rails 2.3.8中可以做到这一点。注意以上是我的代码的简化(我想保留布局和多部分格式)。知道我做错了什么吗?谢谢!

    1 回复  |  直到 14 年前
        1
  •  1
  •   edgerunner    15 年前

    您可能正在利用ActionView中的一个怪癖。据我所知,布局不应该与这样的部分一起使用。我猜,每次你这么做 :layout => 'container' ,它设置相同的实例变量。由于actionView从内到外呈现部分(首先呈现最内部的部分),因此最后使用的值是 :layout 在链条的上方也会被消耗。

    可能做些类似的事情

    # index.html.erb
    <%= render :partial => 'sprockets', :layout => false %>
    

    会有帮助的。

    不过,我想说,这不是一个获得你想要的结果的合适方法。