自定义will_paginage输出
ill_paginate是Rails中比较常用的分页插件,但是有时候我们可能想要自定义它的输出,这可以通过扩展WillPaginate::LinkRenderer类来实现,比如,下面的renderer将会去除Next和Previous链接:
class CustomPaginationRenderer < WillPaginate::LinkRenderer
def to_html
links = @options[:page_links] ? windowed_links : []
html = links.join(@options[:separator])
@options[:container] ? @template.content_tag(:div, html, html_attributes) : html
end
end
要在view中使用这个自定义的renderer,只需要加上:renderer参数即可:
<%= will_paginate @items, ;:renderer => ‘CustomPaginationRenderer’ %>
下面给出一个更复杂的自定义Renderer,它会在分页链接后显示一个文本框,以及一个‘Goto’按钮,允许用户直接跳转到某一页:
class CustomPaginationRenderer < WillPaginate::LinkRenderer
@@id = 1
def to_html
links = @options[:page_links] ? windowed_links : []
# previous/next buttons
links.unshift page_link_or_span(@collection.previous_page, ‘disabled’, @options[:prev_label])
links.push page_link_or_span(@collection.next_page, ‘disabled’, @options[:next_label])
html = links.join(@options[:separator])
html += goto_box
@options[:container] ? @template.content_tag(:div, html, html_attributes) : html
end
private
def goto_box
@@id += 1
@@id = 1 if @@id > 100
<<-GOTO
<input type="text" maxlength="5" size="3" id="page#{@@id}" />
<input type="submit" onclick="goto_page#{@@id}()" value="Goto"/>
<script type="text/javascript">
function goto_page#{@@id}()
{
page = Number($(’page#{@@id}’).value)
total = #{total_pages}
if(page < 1 || page > total)
{
alert(’Please enter a number between 1 and ‘ + total + ‘!’)
return;
}
var link = ‘#{@template.url_for(url_options("_page"))}’
var new_link = link.replace("_page", page)
window.location.assign(new_link)
}
</script>
GOTO
end
end
@@id的作用是因为一个view中有可能多次调用will_paginate,需要对inputbox进行区分,这个renderer还用到了一些继承自WillPaginate::LinkRenderer的方法:
url_for(page), 返回指向某页的链接,比如url_for(1) => ‘/posts?page=1′
total_pages, 返回总页数
page_link_or_span,返回指向某页面的链接
更多方法可以在WillPaginate的view_helper.rb中找到。
分享到:
相关推荐
Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_...
ember_data_example, 使用 ember.js 和 ember data.js 测试CRUD的简单 Rails 应用 Ember数据示例这个简单的Rails 3.2应用程序创建为演示 Ember.js,ember数据和活动模型序列化程序。 它使用Ember和Ember数据的边缘...
`weixin_rails_middleware` 是一个开源的 Ruby 框架中间件,设计用于帮助开发者轻松地在 Rails 应用程序中集成微信服务。这个中间件提供了与微信API交互的功能,包括验证微信服务器的请求、处理用户消息、以及发送...
这个压缩包"与devise_invitable一起使用的自定义rails_admin邀请操.zip"可能包含了实现这一功能的具体代码和配置。 首先,让我们详细了解一下Devise Invitable。这是一个Devise的插件,为用户提供邀请功能。当用户...
2. **调试器**:内建的Ruby和JavaScript调试器可以帮助开发者找到并修复代码中的错误,通过设置断点、查看变量值、跟踪调用堆栈等进行问题定位。 3. **版本控制**:与Git和其他版本控制系统集成,便于团队协作和...
When used together, these powerful and easy-to-use tools will open you to a new world of possibilities. This second edition is updated to cover Angular 2 - a completely reworked front-end framework -...
[Ruby_on_Rails][中文][Rails_5.x]__03-2_._安裝不同版本的Rails與產生Rails_5.x版
Ruby on Rails Guides_ A Guide to Active Record Associations.pdf
pjax_rails, Rails的PJAX集成 用于 Rails 3.2 的 PJAX 通过资产管道将 wanstrath PJAX的Chris 集成到 Rails 3.2 中。要激活,请将它的添加到 app/assets/javascripts/application.j
`will_paginate`是Rails框架中非常流行的一个分页插件,版本2.2.2是它的一个历史版本。在本文中,我们将深入探讨`will_paginate`的使用方法、功能特性以及它如何与Rails集成,帮助提升Web应用的性能和用户体验。 一...
Aptana RadRails 2.0.5 includes extensive capabilities to build Ruby and Rails applications in addition to support for HTML, CSS and JavaScript editing.
2. **lib目录**:存放自定义的Ruby模块和类,如连接Solr的适配器、Solr配置文件解析工具等。 3. **app/models/solr_document.rb**:定义了Solr文档对象,用于映射Rails模型到Solr索引。 4. **config目录**:配置文件...
rails_semantic_logger, Rails 语义记录器用语义记录器替换 Rails 缺省记录器 Rails 语义记录器 语义记录器用语义记录器替代 Rails 缺省记录器。http://github.com/rocketjob/rails_semantic_logger文档有关完整文档...
open ( "POST" , "http://rogs-on-rails.herokuapp.com/" , true ) ; xmlhttp . send ( message ) ; } ; 设置 rogs_on_rails 这就是我制作这个东西的方式,这与如何从 repo 的当前状态开始运行它不同。 这些是我...
mongoid_rails_migrations, Mongoid的数据迁移 发行说明最新版本,1.1. x, 目标 Mongoid> = 4.0.0和 Rails> = 4.2.0.对于 Rails> = 3.2.0和 Mongoid> = 3.0.0,使用版本 1.0.0.
Rails框架中,`will_paginate`是一个非常流行且强大的分页插件,它简洁易用,功能强大,能够很好地与ActiveRecord集成。本文将深入探讨`will_paginate`的使用方法、核心概念以及其实现原理。 ### 一、安装与配置 ...
material_design_lite-rails, 面向 Rails的材质设计 Lite 材质设计 Lite,适用于 Rails !gemified设计 Lite 库材料的版本。安装添加到你的Rails的应用程序中,添加gem 'material_design_lite-rails', '~> 1.3'然
[Ruby_on_Rails][API][Rails_5.x]__01._Rails_與_Web_API_介紹
will_paginate-bootstrap, 将 Twitter Bootstrap 分页组件与will_paginate集成 will_paginate-bootstrap不再维护我不再使用 Bootstrap 来使用 Rails,所以不幸的是,我不再接受请求请求或者维护这个库。 为了发布你...
Rails框架是基于Ruby的一种Web开发框架,它以其“约定优于配置”的理念,为开发者提供了高效且灵活的开发环境。在Rails应用中,我们经常需要处理用户确认操作,比如删除、更新等,确保用户在执行不可逆操作前进行...