will_paginate:无法弄清楚如何自定义内部项目符号

时间:2015-05-08 17:50:03

标签: ruby-on-rails ruby-on-rails-4 pagination will-paginate

我正在尝试使用will_paginate创建自定义页面列表。我成功创建了上一个和下一个按钮。我现在正试图在两者之间创建按钮,但却无法弄清楚如何。

以下是我的上一个和下一个按钮的代码:

<ul class="pagination-styler">

    <% if @options.previous_page %>
      <li>
        <%= link_to params.merge(:page => @options.previous_page), style: "aria-label: previous;" do %>
            <i class="ba ba-left"></i>
        <% end %>
      </li>
    <% end %>
    Page <%= @options.current_page %> of <%= @options.total_pages %>
    <% if @options.next_page %>
        <li>
            <%= link_to params.merge(:page => @options.next_page ), "aria-label" => "next" do %>
                <i class="ba ba-right"></i>
            <% end %>
        </li>
    <% end %>
</ul>

这将呈现以下内容:

pagination menu

我想替换它所说的&#34;第3页第3页&#34;使用图标我看起来类似于上一个和下一个按钮,并具有特定的页码。我无法找到will_paginate提供的任何助手或方法,但我确信必须有办法。

有谁知道如何自定义实际的链接按钮?我需要将它们包裹在&#34; li&#34;并在链接内添加。

1 个答案:

答案 0 :(得分:0)

我认为您可以通过覆盖tag

中的will_paginate方法来实现此目的

您使用/app/helpers中的.rb文件执行此操作我称之为pageoverride.rb

里面会看起来像这样

module Pageoverride
  class PaginationListLinkRenderer < WillPaginate::ActionView::LinkRenderer
    protected
      def tag(name, value, attributes = {})
        string_attributes = attributes.inject('') do |attrs, pair|
          unless pair.last.nil?
            attrs << %( #{pair.first}="#{CGI::escapeHTML(pair.last.to_s)}")
          end
          attrs
        end
        "<li><#{name}#{string_attributes}>#{value}</#{name}></li>"
      end
  end
end

我只在return语句周围添加了<li></li>。然后,要使用此功能,您的分页调用应如下所示<%= will_paginate(@options, :renderer => Pageoverride::PaginationListLinkRenderer) %>您应该能够在那里添加任何类<li>