will_paginate 搜索结果分页
Rails分页plugin之will_paginate
搜索结果的分页显示是一个常用功能,实现方式有很多中,rails也内建了对分页的支持,但是rails2.0将去掉分页组件,将分页功能交给 plugin去实现,这里通过一个简单的例子展示如何使用最流行的rails分页plugin -- will_paginate.
1.安装will_paginate,编写分页代码
安装:
ruby script\plugin install svn://errtheblog.com/svn/plugins/will_paginate安装成功后,开始编写分页代码
修改products_controller.rb,找到index方法
Rails代码
@products = Product.paginate :page => params[:page],
:per_page => 5
@products = Product.paginate :page => params[:page],
:per_page => 5
保存加入翻页,修改app/view/products/index.rhtml,在最后加入一行
Rails代码
<%= will_paginate @products %>
<%= will_paginate @products %>
写好后打开页面即可看到看到现在显示前5个产品了和翻页了,试着点击next,previous进行翻页
Rails代码
<%= will_paginate @products,:prev_label=> '上一页',:next_label=> '下一页' %>
<%= will_paginate @products,:prev_label=> '上一页',:next_label=> '下一页' %>可定义上下翻页显示
4.加入搜索
在index.rhtml适当位置加入:
Rails代码
<% form_tag products_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
<% form_tag products_path, :method => 'get' do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search", :name => nil %>
</p>
<% end %>
这里注意,:method => 'get'必须指定, submit_tag的:name属性设为nil,避免在url中出现不必要的内容
将products_controller.rb的index方法修改为
Rails代码
@products = Product.paginate :page => params[:page],
:per_page => 5,
:conditions => ["name like ?", "%#{params[:search]}%"]
@products = Product.paginate :page => params[:page],
:per_page => 5,
:conditions => ["name like ?", "%#{params[:search]}%"]注意在加入搜索条件时的写法,这样可以避免sql注入,提高安全性
试着进行搜索,可以看到搜索结果很好的进行了分页.
在此还提供一些分页统计信息
Rails代码
统计信息:
共<%=@products.total_entries%>条, 共<%=@products.page_count %>页,当前第<%= @products.current_page%>页.
分享到:
相关推荐
**will_paginate分页插件详解** 在Web开发中,数据分页是一项常见的需求,它可以帮助用户更有效地浏览大量信息,提高用户体验。Rails框架中,`will_paginate`是一个非常流行且强大的分页插件,它简洁易用,功能强大...
`will_paginate`是Rails框架中非常流行的一个分页插件,版本2.2.2是它的一个历史版本。在本文中,我们将深入探讨`will_paginate`的使用方法、功能特性以及它如何与Rails集成,帮助提升Web应用的性能和用户体验。 一...
will_paginate-bootstrap, 将 Twitter Bootstrap 分页组件与will_paginate集成 will_paginate-bootstrap不再维护我不再使用 Bootstrap 来使用 Rails,所以不幸的是,我不再接受请求请求或者维护这个库。 为了发布你...
而`will_paginate`则是一个非常流行的分页库,它与`scaffolding`结合使用,能够为你的Rails应用添加优雅的分页功能。 `will_paginate`库由Matias Berezin创建,它的设计简洁且易于使用。它不仅提供了分页的基本功能...
will_paginate是一款广受欢迎的Ruby on Rails插件,用于实现高效、简洁的数据分页。在本文中,我们将深入探讨will_paginate的安装、使用方法以及其核心概念,帮助开发者更好地理解和应用这个插件。 一、will_...
5. **性能优化**:`will_paginate` 在返回分页结果时,只会从数据库中取出所需的数据,提高了查询效率。 6. **国际化支持**:`will_paginate` 支持多种语言,包括中文,可以通过配置文件来切换不同的语言环境,提供...
《will_paginate v2.3.11:Rails分页插件详解》 在Web开发中,处理大量的数据是常见的需求,特别是在使用Ruby on Rails框架时。为了优化用户体验,提高页面加载速度,分页功能显得尤为重要。这时,will_paginate...
will_paginate will_paginate是一个分页库,与Ruby on Rails,Sinatra,Hanami :: View,Merb,DataMapper和Sequel集成。 安装: ## Gemfile for Rails 3+, Sinatra, and Merbgem 'will_paginate' , '~> 3.1.0' 有关...
gem 'will_paginate-bootstrap4' 用法 <%= will_paginate @clients, renderer: WillPaginate::ActionView::BootstrapLinkRenderer %> 以下选项可用(除了will_paginate中可用的选项之外): :list_classes ...
`Will_Paginate` 是一个非常流行的Ruby on Rails插件,用于处理大型数据集的分页。它提供了简洁、灵活的API,使得在Rails应用中实现数据库查询结果的分页变得简单易行。在本篇文章中,我们将深入探讨`Will_Paginate`...
为了实现分页,开发者通常需要安装并使用第三方插件,比如"will_paginate"。这个插件允许你在Rails应用中轻松地对数据进行分页显示,提高用户体验并减轻服务器压力。 **1. will_paginate插件介绍** `will_paginate`...
Ruby-on-Rails、Sinatra、Merb、DataMapper 和 Sequel 这些都是 Ruby 开发领域中的关键组件,而 `will_paginate` 是一个在这些框架中广泛使用的分页库。它提供了简单、灵活的接口,帮助开发者在处理大量数据时进行...
在这个特定的场景中,我们关注的是一个名为 "will_paginate" 的插件,它是 Ruby on Rails 中用于实现高效、灵活分页功能的常用工具。 `will_paginate` 插件为 Rails 应用程序提供了一种简单而优雅的方式来处理大量...
在实际项目中,可能还需要处理搜索和分页的交互,比如通过表单提交搜索查询,并结合分页展示结果。可以创建一个简单的HTML表单: ```erb <%= form_tag users_path, method: :get do %> <%= text_field_tag :search...
will_paginate will_paginate是一个分页库,与Ruby on Rails,Sinatra,Hanami :: View,Merb,DataMapper和Sequel集成。 安装:##用于Rails 3 +,Sinatra和Merb的Gemfile gem'will_paginate','〜> will_paginate ...
传统的分页方法如`Kaminari`或`will_paginate`在处理大量数据时,会一次性加载所有分页所需的记录,这可能导致内存占用过多,从而影响应用程序的性能。`Geared Pagination`则采用了一种更聪明的策略,它根据当前的...
块状 一个 Reddit 克隆,用于教授 Web 开发和 Rails 4 的基础知识。与我在导师一起制作。...will_paginate 3.0.5 - 分页库 binding_of_caller - 用于评估堆栈中的代码 Better_errors - 更强大的错误页面 安静的
rails2.0的内容管理系统,可以发布文档、CVS库和Web资源3中资源,其中文档可以上传下载附件。支持打Tag。用户注册登录使用restful_authentication,分页使用will_paginate,Gem版本1.3.5