私はスタートガイドの静的ジェネレータを構築しており、同じガイドのページをフォルダにグループ化しています。nanocの同じフォルダ内の次のページと前のボタン
次ページと前ページのページの下にフッターを追加するにはどうすればよいですか?
私はスタートガイドの静的ジェネレータを構築しており、同じガイドのページをフォルダにグループ化しています。nanocの同じフォルダ内の次のページと前のボタン
次ページと前ページのページの下にフッターを追加するにはどうすればよいですか?
Nanocのページ(「アイテム」)には固有の順序がありません。追加する場合を除いて、「前」および「次」の概念はありません。項目のリストに順序を導入する方法は、しかし、があります。発注属性によって
@items.sort_by { |i| i[:title] }
)@items.sort_by { |i| i.fetch(:order, 0) }
)使用できるアイテムの収集のために定義された順序は、存在したら、#index
を使用して現在のページのインデックス、したがって前ページと次ページのインデックスも検索します。例えば、ordered_items
が注文した商品のリストであると仮定すると:
def previous_item(item)
idx = ordered_items.index(item)
if idx && idx > 0
ordered_items[idx - 1]
end
end
#next_item
機能は同様です。
どのように#ordered_items
機能が実装されているかは、達成したいことによって異なります。サイトのすべてのアイテムを注文しますか?その場合、実装は次のようになります。一方で、あなたはサイトの特定の部分にスコープされる注文した商品を好む
def ordered_items
@items.select { |i| i.key?(:order) }.sort_by { |i| i[:order] }
end
、場合は、
のような実装を持つことができます ChildParent helperでdef ordered_items_for_manual
@items.find_all('/manual/**/*')
.select { |i| i.key?(:order) }
.sort_by { |i| i[:order] }
end
、あなたは自動的に現在のセクションのために注文した商品を決定することができる:
def ordered_siblings_and_self
children_of(parent_of(@item))
.select { |i| i.key?(:order) }
.sort_by { |i| i[:order] }
end
最後に、フッターに(例えばデフォルトのレイアウトで)、yは
<% if previous_item %>
<%= link_to(previous_item[:title], previous_item) %>
<% end %>
のようなものを貼り付けてから、前のページへのリンクがあります。次のリンクと同様です。