2017-05-31 13 views
0

私はconfig.rbMIddlemanで動的に生成されたページをリンクする方法は?

data.generated.each do |i| 
    proxy "#{i.id}.html", "/generated/template.html", :locals => { :i => i }, :ignore => true 
end 

で次の、私は隣と前の動的に生成されたこれらのページのリンクを作成するにはどうすればよい

<% i = locals[:i] %> 
<h1><%= i.title %></h1> 

source/generated/template.html.erbでテンプレートと私の動的なページを生成するのですか?

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 

上記の2ページ目であることcurrで始まります:

答えて

1

は、すべてのページが最初と最後のもののために保存を生成するための簡単な方法があります。私は、エレガントな方法でこれらのコーナーケースを処理するための迅速な解決策を見つけることができませんので、我々は単に手動でこれらのページを生成したい:

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が必要です。

+0

素晴らしいアイデア!しかし、私はそれを '[nil]'で動作させるのに問題があります。それらがなければ、あなたが書いた最初のページを除いてうまく動作します。上記の例を使用すると、Middleman :: CoreExtensions :: Collections :: LazyCollectorStepを配列に変換できません(Middleman :: CoreExtensions :: Collections :: LazyCollectorStep#to_aryはMiddleman :: CoreExtensions :: Collections ::を返します) LazyCollectorStep)(TypeError) – helcim

+0

Ah。 'data.generated'で' to_a'を呼び出すと助けになります。私はここに仲介人がいないのでチェックしてください。 – mudasobwa

+0

いいえ、同じエラーが表示されます。 – helcim

関連する問題