如何在MIddleman中链接动态生成的页面?
问题描述:
我生成我的动态页面与config.rb
如何在MIddleman中链接动态生成的页面?
data.generated.each do |i|
proxy "#{i.id}.html", "/generated/template.html", :locals => { :i => i }, :ignore => true
end
以下和source/generated/template.html.erb
<% i = locals[:i] %>
<h1><%= i.title %></h1>
模板如何创建链接到下一个和以前的这些动态生成的页面?
答
有一个简单的方法来产生所有页面保存为第一和最后的:
data.generated.each_cons(3) do |prev, curr, nxt|
proxy "#{curr.id}.html",
"/generated/template.html",
locals: { prev: prev, curr: curr, next: nxt },
ignore: true
end
以上将开始与curr
是第二页。我无法找到快速解决方案在一个优雅的方式来处理这些极端情况,所以我们刚刚手工制作这些网页:
def generate_page prev, curr, nxt
proxy "#{curr.id}.html",
"/generated/template.html",
locals: { prev: prev, curr: curr, next: nxt },
ignore: true
end
data_generated = data.generated
data_generated.each_cons(3).with_index do |(prev, curr, nxt), idx|
generate_page(nil, prev, curr) if idx == 0
generate_page(prev, curr, nxt)
generate_page(curr, nxt, nil) if idx == data_generated.size
end
<% prev, curr, nxt = locals.values_at(*%i|prev curr next|) %>
<h1><%= curr.title %></h1>
<a href="<%= prev.id %>.html">⇐ <%= prev.title %></a> |
<a href="<%= nxt.id %>.html"><%= nxt.title %> ⇒</a>
它可能需要申请额外的检查对于nxt
/prev
不是nil
在建筑物链接周围是必需的。
好主意!但是我在使用'[n]''的时候遇到了问题。没有他们,它可以正常工作,除了你写的第一页。当我使用上面的例子时,我得到:无法将Middleman :: CoreExtensions :: Collections :: LazyCollectorStep转换为Array(Middleman :: CoreExtensions :: Collections :: LazyCollectorStep#to_ary给Middleman :: CoreExtensions :: Collections :: LazyCollectorStep)(TypeError) – helcim
啊。在'data.generated'上调用'to_a'应该有所帮助。你可以请检查,因为我没有中间人在这里。 – mudasobwa
不,获取相同的错误。 – helcim