`
orcl_zhang
  • 浏览: 244542 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

will_paginate ajax

阅读更多
两种方法
一,
@@pagination_options = { :class => 'pagination',
    :prev_label   => '上一页',
    :next_label   => '下一页',
    :inner_window => 4, # links around the current page
    :outer_window => 1, # links around beginning and end
    :separator    => ' ', # single space is friendly to spiders and non-graphic browsers
    :param_name   => :page,
    #add by chengang
    :update =>nil, #ajax所要更新的html元素的id
    :url_suffix => ''  #url的后缀,主要是为了补全REST所需要的url
    #add end
  }
  mattr_reader :pagination_options

  # => will_paginate Ajax效果扩展Helper方法
  def will_paginate_remote(entries = @entries, options = {})
    total_pages = entries.total_pages

    if total_pages > 1
      options = options.symbolize_keys.reverse_merge(pagination_options)
      page, param = entries.current_page, options.delete(:param_name)

      inner_window, outer_window = options.delete(:inner_window).to_i, options.delete(:outer_window).to_i
      #add by chengang
      update =  options.delete(:update)
      suffix =  options.delete(:url_suffix)
      url = request.env['PATH_INFO']
      url += suffix if suffix
      #add end

      min = page - inner_window
      max = page + inner_window
      if max > total_pages then min -= max - total_pages
      elsif min < 1  then max += 1 - min
      end

      current   = min..max
      beginning = 1..(1 + outer_window)
      tail      = (total_pages - outer_window)..total_pages
      visible   = [beginning, current, tail].map(&:to_a).flatten.sort.uniq
      links, prev = [], 0

      visible.each do |n|
        next if n < 1
        break if n > total_pages

        unless n - prev > 1
          prev = n
          #change by chengang
          text = (n==page ? n : "[#{n}]")
          links << page_link_remote_or_span((n != page ? n : nil), 'current', text, param, update, url)
        else
          prev = n - 1
          links << '...'
          redo
        end
      end

      #change by chengang
      links.unshift page_link_remote_or_span(entries.previous_page, 'disabled', options.delete(:prev_label), param, update, url)
      links.push    page_link_remote_or_span(entries.next_page,     'disabled', options.delete(:next_label), param, update, url)
      #change end

      content_tag :div, links.join(options.delete(:separator)), options
    end
  end

<%= will_paginate_remote @task_logs, :update => 'task_logs_list', :url_suffix => nil %>

二,
<%= will_paginate @task_logs, {
      :renderer => 'WillPaginate::LinkRenderer',
      :update => 'task_logs_list',
      :url => task_url(@task),
      :create => '',
      :complete => ''}%>

class AjaxLinkRenderer < WillPaginate::LinkRenderer
  def page_link_or_span(page, span_class = 'current', text = nil)
    text ||= page.to_s
    if page and page != current_page
      @template.link_to_remote text, :url=>url_options(page),:update=>@options[:update]
    else
      @template.content_tag :span, text, :class => span_class
    end
  end
end
分享到:
评论

相关推荐

    will_paginate 2.2.2

    `will_paginate`是Rails框架中非常流行的一个分页插件,版本2.2.2是它的一个历史版本。在本文中,我们将深入探讨`will_paginate`的使用方法、功能特性以及它如何与Rails集成,帮助提升Web应用的性能和用户体验。 一...

    will_paginate分页插件

    **will_paginate分页插件详解** 在Web开发中,数据分页是一项常见的需求,它可以帮助用户更有效地浏览大量信息,提高用户体验。Rails框架中,`will_paginate`是一个非常流行且强大的分页插件,它简洁易用,功能强大...

    will_paginate-bootstrap, 将 Twitter Bootstrap 分页组件与will_paginate集成.zip

    will_paginate-bootstrap, 将 Twitter Bootstrap 分页组件与will_paginate集成 will_paginate-bootstrap不再维护我不再使用 Bootstrap 来使用 Rails,所以不幸的是,我不再接受请求请求或者维护这个库。 为了发布你...

    scaffolding+will_paginate+提供will_paginate下载

    在Rails项目中,安装`will_paginate`非常简单,只需要在Gemfile中添加gem `'will_paginate'`,然后执行`bundle install`即可。 `will_paginate`的使用通常包括以下几个步骤: 1. **引入Gem**:首先,在Gemfile中...

    will_paginate插件下载

    《will_paginate插件详解与应用》 在Web开发中,数据分页是常见的功能,尤其是在处理大量数据时,为了提高用户体验和加载速度,我们通常会将数据分页展示。will_paginate是一款广受欢迎的Ruby on Rails插件,用于...

    will_paginate v2.3.11

    《will_paginate v2.3.11:Rails分页插件详解》 在Web开发中,处理大量的数据是常见的需求,特别是在使用Ruby on Rails框架时。为了优化用户体验,提高页面加载速度,分页功能显得尤为重要。这时,will_paginate...

    will_paginate 2.1.0

    `will_paginate` 是一个非常流行的 Ruby on Rails(Rails)框架中的分页库,它为开发者提供了方便的方式来处理大量数据的分页展示。版本 `2.1.0` 是这个库的一个特定版本,包含了该库在当时的一些特性、优化和可能的...

    will_paginate_endless_scroll_example:如何使用 will_paginate gem 创建无限滚动的演示

    cd will_paginate_endless_scroll_example 安装依赖: bundle install 迁移和种子数据库: bundle exec rake db:migrate db:seed 就是这样,它准备好了。 跑步: 像普通的 rails 应用程序一样运行: rails s ...

    will_paginate-bootstrap4:钩入will_paginate以格式化html以匹配Twitter Bootstrap 4样式

    gem 'will_paginate-bootstrap4' 用法 &lt;&#37;= will_paginate @clients, renderer: WillPaginate::ActionView::BootstrapLinkRenderer %&gt; 以下选项可用(除了will_paginate中可用的选项之外): :list_classes ...

    will_paginate:用于Rails,Sinatra,Merb,DataMapper等的分页库

    will_paginate will_paginate是一个分页库,与Ruby on Rails,Sinatra,Hanami :: View,Merb,DataMapper和Sequel集成。 安装: ## Gemfile for Rails 3+, Sinatra, and Merbgem 'will_paginate' , '~&gt; 3.1.0' 有关...

    WillPaginateExample:Ruby on Rails的Will_Paginate示例

    **Will_Paginate在Ruby on Rails中的应用** `Will_Paginate` 是一个非常流行的Ruby on Rails插件,用于处理大型数据集的分页。它提供了简洁、灵活的API,使得在Rails应用中实现数据库查询结果的分页变得简单易行。...

    ruby will_paginate的用法

    新版本的will_paginate已经抛弃了这样的做法,转而使用gem的方式,本文通过建立一个名为foobar的应用来了解一下will_paginate的用法。 ============================== C:\&gt;rails foobar -d mysql C:\&gt;cd foobar C:\...

    rails 2.0.2 分页 需另外下载插件

    为了实现分页,开发者通常需要安装并使用第三方插件,比如"will_paginate"。这个插件允许你在Rails应用中轻松地对数据进行分页显示,提高用户体验并减轻服务器压力。 **1. will_paginate插件介绍** `will_paginate`...

    ruby on rails 常用插件下载

    此外,`will_paginate` 还支持 AJAX 效果,以便无刷新地切换页面。通过使用 `remote: true` 参数,可以轻松实现这一功能: ```erb &lt;%= will_paginate @posts, remote: true %&gt; ``` 在对应的 JavaScript 文件中,你...

    Ruby-willpaginate一个分页库可与RubyonRailsSinatraMerbDataMapper和Sequel集成

    Ruby-on-Rails、Sinatra、Merb、DataMapper 和 Sequel 这些都是 Ruby 开发领域中的关键组件,而 `will_paginate` 是一个在这些框架中广泛使用的分页库。它提供了简单、灵活的接口,帮助开发者在处理大量数据时进行...

    Python库 | mkdocs_paginate_plugin-0.0.3-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:mkdocs_paginate_plugin-0.0.3-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    resume 用Ruby技术实现的search 分页的例子

    Rails提供了`will_paginate`或`kaminari`这样的插件来简化分页实现。以`will_paginate`为例,首先添加到Gemfile并安装: ```ruby gem 'will_paginate' gem 'will_paginate-bootstrap' # 如果你想使用Bootstrap样式 ...

Global site tag (gtag.js) - Google Analytics