我正在config.rb
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>
如何动态创建指向这些生成页面的下一个和上一个的链接?
答案 0 :(得分:1)
有一种简单的方法可以为第一个和最后一个页面生成所有页面:
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
的附加检查。