2010-09-03 53 views
0

我有一個使用每個元素的佈局(包裝在容器中)呈現的部分集合。但是,呈現的收集時,外「容器」也被添加(這似乎是ADDE到每個渲染,儘管被指定佈局Rails 3.0.0中的部分佈局

例:

# 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

您可能正在利用ActionView中的一個怪癖。就我所知,佈局並不意味着要與這樣的部分一起使用。我的猜測是,每次你做:layout => 'container',它都會設置相同的實例變量。由於ActionView會渲染部分內部(最裏面的部分首先被渲染),所以:layout的最後一個使用的值也在鏈中更高。

也許做這樣的事情

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

會有所幫助。

不過我會說這不是一個正確的方式來獲得你想要的結果。