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机制。希望有一天我会明白:),谢谢你的评论。