will_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中找到。
相关推荐
`will_paginate`是Rails框架中非常流行的一个分页插件,版本2.2.2是它的一个历史版本。在本文中,我们将深入探讨`will_paginate`的使用方法、功能特性以及它如何与Rails集成,帮助提升Web应用的性能和用户体验。 一...
**will_paginate分页插件详解** 在Web开发中,数据分页是一项常见的需求,它可以帮助用户更有效地浏览大量信息,提高用户体验。Rails框架中,`will_paginate`是一个非常流行且强大的分页插件,它简洁易用,功能强大...
6. **自定义分页样式**:如果你想要自定义分页链接的样式,可以创建一个名为`will_paginate.css`的CSS文件,并在项目中引用它。 除了基本的分页功能,`will_paginate`还提供了一些高级特性,如:跳过特定页码、分页...
will_paginate-bootstrap, 将 Twitter Bootstrap 分页组件与will_paginate集成 will_paginate-bootstrap不再维护我不再使用 Bootstrap 来使用 Rails,所以不幸的是,我不再接受请求请求或者维护这个库。 为了发布你...
《will_paginate插件详解与应用》 在Web开发中,数据分页是常见的功能,尤其是在处理大量数据时,为了提高用户体验和加载速度,我们通常会将数据分页展示。will_paginate是一款广受欢迎的Ruby on Rails插件,用于...
《will_paginate v2.3.11:Rails分页插件详解》 在Web开发中,处理大量的数据是常见的需求,特别是在使用Ruby on Rails框架时。为了优化用户体验,提高页面加载速度,分页功能显得尤为重要。这时,will_paginate...
2. **灵活的配置**:`will_paginate` 允许开发者自定义分页参数,如默认每页记录数,以及如何处理分页链接的样式和结构。 3. **与ActiveRecord集成**:`will_paginate` 无缝集成于 ActiveRecord,这意味着你可以...
“WILL_VAL”指标可能是基于著名的威廉姆斯百分比范围(Williams' %R)的自定义技术分析工具。威廉姆斯百分比范围由Larry Williams创造,它是一个超买/超卖指标,衡量价格在特定时间段内的最高价与收盘价之间的相对...
这个压缩包"IRST_Intel_14.5.0.1081_W10x64_A_Will_Abintiocalcualtion_"似乎包含了一个特定版本的IRST,版本号为14.5.0.1081,并且是专为64位的Windows 10操作系统设计的。"Will Abintiocalcualtion"标签可能指的是...
【标题】"DMIEDIT_utility_DMIEDIT_utility_DMIUTILITY_DMIEDIT_Will_源码.zip" 提供的是 DMIEDIT 工具相关的源代码。DMIEDIT 是一个用于管理并修改DMI(Desktop Management Interface)数据的实用程序。DMI 是一种...
标题“Forth_Will_zip_forth_”似乎与编程语言Forth有关,同时结合描述中的“get it to use your stuff”,可能是指一个项目或程序,其中整合了Forth语言的某些功能,目的是为了使用户能够利用这些功能。标签“Will ...
"bandwidth_test_Will_voicezvv_webrtc_bandwidthmonitor_"项目专注于测试WebRTC环境下的带宽使用情况,这对于优化视频通话、语音通话和数据共享等实时通信应用至关重要。 在WebRTC中,带宽测试是关键环节,因为它...
综上所述,"Day Bar Info_Will_mt4_"是一个针对MetaTrader 4平台的自定义技术分析工具,专注于每日K线数据的解读,提供交易收益跟踪和目标管理功能,有助于交易者优化他们的交易策略并进行有效的风险管理。...
标题中的"stm32f205rb_python_Will_"暗示了这个压缩包内容与STM32F205RB微控制器以及Python编程语言有关,可能是关于如何使用Python与这款微控制器进行通信或开发固件的教程或者资料。"Will_"可能是一个人名,代表了...
** wdT.rar_Will_watchdog_reset ** 在嵌入式系统和计算机硬件领域,"Watchdog Timer"(看门狗定时器)是一个重要的组件,它主要用于确保系统的稳定性和可靠性。当系统出现异常或死机时,看门狗定时器能够执行复位...
【标题】"PSHNewsLetterMailer2_carefully8iz_Will_Emailnotification_" 提供的信息表明,这是一个关于电子邮件通知的程序,可能是一个用于发送新闻通讯的邮件系统。"carefully8iz"可能代表项目的特定版本或者开发者...
标题"BibliographieCN_happilysai_Will_SIMULINK_"表明这可能是一个关于SIMULINK技术的中文参考文献集合,由用户"happilysai"和"Will"共同整理或涉及。SIMULINK是MATLAB环境中的一个强大工具,用于建立动态系统的...
总的来说,"EMailReporter_email_Will_generator_"是一款旨在提高企业内部或对外通信效率的工具,通过自动化邮件生成和发送,降低了人工操作的负担,提升了办公自动化程度。同时,它的设计和实现也涵盖了多方面的IT...