Twitter Bootstrap与will_paginate一起使用

时间:2014-04-18 13:18:09

标签: ruby-on-rails twitter-bootstrap will-paginate

我让will_paginate工作得很好,但我正面临着错误连接Twitter Bootstrap的错误。我的单行will_paginate链接成为项目符号列表。

<% will_paginate @thing %>

变为:

<%= will_paginate @thing, :renderer => BootstrapPagination::Rails %>

或者我觉得更现代:

<%= will_paginate @thing, renderer: BootstrapPagination::Rails %>

我得到了垂直项目符号列表,我尝试过包括=和 - 符号,但我输了。

3 个答案:

答案 0 :(得分:5)

要使用will_paginate和bootstrap,建议将gem“bootstrap-will_paginate”添加到项目中(参见http://www.railstutorial.org/book/updating_and_deleting_users#sec-pagination)。

此外,如果您使用的是Twitter Bootstrap 3.x,则会有一个过多的div包装要删除的分页列表。 感谢补丁的这个主题:https://gist.github.com/henrik/1214011

要总结补丁,请将以下内容放在/ config / initializers中,如will_paginate.rb。

# File config/initializers/will_paginate.rb
# From https://gist.github.com/1214011

module WillPaginate
    module ActionView
        def will_paginate(collection = nil, options = {})
            options[:renderer] ||= BootstrapLinkRenderer
            super.try :html_safe
        end

    class BootstrapLinkRenderer < LinkRenderer
        protected

        def html_container(html)
            tag :ul, html, container_attributes
        end

        def page_number(page)
            tag :li, link(page, page, :rel => rel_value(page)), :class => ('active' if page == current_page)
        end

        def previous_or_next_page(page, text, classname)
            tag :li, link(text, page || '#'), :class => [classname[0..3], classname, ('disabled' unless page)].join(' ')
        end

        def gap
            tag :li, link(super, '#'), :class => 'disabled'
        end

        end
    end
end

答案 1 :(得分:2)

我自然而然地在文档的帮助下完成了这项工作。

而不仅仅是这个:

<%= will_paginate @thing, renderer: BootstrapPagination::Rails %>

我需要这个:

<div class="pagination">
  <%= will_paginate @thing, renderer: BootstrapPagination::Rails %>
</div>

答案 2 :(得分:2)

更新了bootstrap 4的要点: https://gist.github.com/daino3/661d9742e2b9803e329a880f8c3ee529

此外,有关使用普通旧will_paginate和bootstrap 4与自定义渲染器的说明:

说明

对于bootstrap 4,将this gist code投入config/initializers/will_paginate.rb

然后,下面的代码进入application_helper.rb

  def will_paginate(collection_or_options = nil, options = {})
    if collection_or_options.is_a? Hash
      options, collection_or_options = collection_or_options, nil
    end
    unless options[:renderer]
      options = options.merge renderer: WillPaginate::ActionView::BootstrapLinkRenderer
    end
    super *[collection_or_options, options].compact
  end

最后,在视图中调用如下:

nav aria-label="blah"
  = will_paginate @items