1

デフォルトのカミナリ テンプレートをカスタマイズするのに苦労しています。

ジェネレーターを使用して、kaminari テンプレート ファイルを作成しました。kaminari/paginator.html.haml:

= paginator.render do
  %nav.pagination

私がしたいのは、link_to や render など、この中の actionview ヘルパーにアクセスすることだけです。ソース コードを検索しましたが、このレンダー メソッドに渡されるヘルパーの傾斜が見つかりません。

基本的に、これを行うことができます:

= paginator.render do
  %nav.pagination
    = render :partial => 'custom links'
    = link_to "custom link", custom_path

..私の問題を解決します。

4

3 に答える 3

6

満足のいく回答が得られなかったので、独自の解決策を提出します。

paginator.renderブロック内でヘルパーを使用することはできません。

そこで、最初にカミナリのカスタム テンプレート ファイルを生成します。

rails g kaminari:views default -e haml

次の内容で新しいファイル kaminari/custom.html.haml を作成します。

#pagination
  = paginate custom
  = render :partial => "kaminari/custom_view_file"

paginate @resultsビュー ファイルのkaminari paginator ヘルパー ( ) を次のように置き換えます。

= render :partial => "kaminari/custom", :object => @results
于 2012-06-04T03:25:08.843 に答える
1

次のようなことができるはずです。

# /app/views/kaminari/_paginator.html.erb

= paginator.render do
  %nav.pagination
    = render :partial => 'shared/custom'
    = link_to "custom link", custom_path

基本的に、パーシャルはおそらく同じディレクトリに存在しないため、パーシャルのフル パスを指定する必要があります。

編集:

カミナリは _paginator.html.erb の paginate.render ブロックに Rails ビュー ヘルパーをインポートしていないと思います。paginator によって生成された出力をカスタマイズするには、代わりに
1. Rails ヘルパーを使用できる _next_page.erb.html などをカスタマイズします。なぜそうなのかはわかりませんが。
2. ページネーターの一部として一般的な html を表示する場合は、代わりにレイアウトに配置することをお勧めします。ページネーターは、ページのナビゲーションに関するものです。

たとえば、これは _prev_page.html.erb です。

<span class="prev">
  <%= link_to "google", "www.google.com" %>
  <%# link_to_unless current_page.first?, raw(t 'views.pagination.previous'), url, :rel => 'prev', :remote => remote %>
</span>

古いコードをコメントアウトし、カスタム リンクを使用しました。

于 2012-05-31T07:29:42.733 に答える