有一个简单的方法来产生所有页面保存为第一和最后的:
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