【问题标题】:Partial Layout in Rails 3.0.0Rails 3.0.0 中的部分布局
【发布时间】:2010-09-03 21:18:06
【问题描述】:

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

例子:

# 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 中可以做到这一点。请注意,以上是我的代码的简化(我想保留布局和多部分格式)。任何想法我做错了什么?谢谢!

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您可能正在利用 ActionView 中的一个怪癖。据我所知,布局并不意味着与这样的部分一起使用。我的猜测是,每次您执行:layout =&gt; 'container' 时,它都会设置相同的实例变量。由于 ActionView 由内向外渲染局部(最内部的局部首先渲染),:layout 的最后使用值也会在链的更高层使用。

    可能会做类似的事情

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

    会有所帮助。

    我还是要说这不是获得所需结果的正确方法。

    【讨论】:

      猜你喜欢
      • 2011-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 2014-11-02
      • 2017-05-02
      相关资源
      最近更新 更多