Layout 在nanoc[haml]中包含部分内容

Layout 在nanoc[haml]中包含部分内容,layout,haml,render,partial,nanoc,Layout,Haml,Render,Partial,Nanoc,我的规则文件中有以下内容: compile '/gallery/' do filter :haml layout :'gallery' end ... compile '/' do filter :haml layout :'default' end ... route '/gallery/' do nil end ... route '*' do item.identifier.chop + '.' +item[:extension] end

我的规则文件中有以下内容:

compile '/gallery/' do  
  filter :haml
  layout :'gallery'
end  
...
compile '/' do  
  filter :haml
  layout :'default'
end  
...
route '/gallery/' do  
  nil
end
...
route '*' do  
  item.identifier.chop + '.' +item[:extension]
end
,所以现在我的content/index.html经过haml过滤器并编译为output/index.html 一切都很好。 My content/gallery.html包含以下代码,这些代码也会经过haml:

#gallery-container  

%ul.items-small  
  %li.item  
    - @item.children.each do |img|  
      %a{:href => "#{img.path}"}  

%ul.items-big  
  %li.item-big  
    - @item.children.each do |img|  
      %a{:href => "#"}  
        %figure  
          %img{:src => "#{img.path(:rep => :thumbnail)}"}  
          %figcaption.img-caption Caption  
,它在
content/gallery/
文件夹中收集一些图像,当我将路由设置为
output/gallery/index.html
(查看预览输出)时,我确实得到了我想要的,所以一切都很好

但是,现在我想在我的
content/index.html
中使用生成的代码作为部分代码 当我尝试像
=render'gallery'
那样包含它时,我没有得到预期的代码。反过来,我会收到错误消息
LocalJumpError:no block given(yield)

我的
layouts/gallery.html
文件中应该有什么?如果我把
放在那里,我会得到上面的错误,如果我删除
=渲染“gallery”
没有错误,
但是如果我在
layouts/gallery.html
中放入一些文本,并在index.html中再次添加
=render'gallery'
,我会在
layouts/gallery.html
中直接获得该文本,因此它会被包含在内,并且不会出错。那么,我是否应该将我期望的库代码放入
layouts/gallery.html
中,然后从index.html调用=render'gallery'??但这是行不通的。另外,
layouts/default.html
已经有了自己的收益率,并且正在工作,然后我尝试在将通过该收益率编译的项目中使用该=render。我做错了吗?我迷路了

我的所有布局文件都已过滤
:erb


所以我的问题是如何包含这个部分。谢谢

经过一些尝试和错误,似乎应该这样做

= items["/gallery/"].compiled_content

,如果我把它放进我的
content/index.html.haml
文件中,我确实会得到我所期望的结果,而我的
content/gallery.html.haml
会呈现在那个地方。我还不是舒尔,我应该在哪里使用
渲染
,使用它和我在这里使用的这个有什么区别。

在深入研究代码后,我找到了另一个解决方案

render方法是
Helpers::Rendering
的一部分,如果查看源代码,您会看到它从规则()中调用
filter\u for\u layout

因此,您只需将以下内容添加到
规则
文件中:

layout '/gallery/', :haml, encoding: 'utf-8'

这样,在渲染库布局时,它将像其他布局一样通过haml过滤器。

我怀疑渲染仅适用于编译站点时存在的文件。这就是为什么你需要为这个连接到nanocs机制。希望有一天我会明白:),谢谢你的评论。