Rails项目中用上了Ferret分布,全文检索后,发现will_paginate的分页用不上了,于是google ,再配合实际情况,山寨了一个适合自己的版本。
参考了这篇文章:
http://opensoul.org/2007/8/17/acts_as_ferret-will_paginate
model
#全文检索方法
def self.full_text_search(q, options = {})
return nil if q.nil? or q==""
default_options = {:limit => 10, :page => 1}
options = default_options.merge options
# get the offset based on what page we're on
options[:offset] = options[:limit] * (options.delete(:page).to_i-1)
results = Page.find_by_contents(q, options)
end
戏肉来了,在application.rb写了一个公用的分页
#全文检索分页方法
def pages_for(result,options = {})
page, per_page, total = (options[:page] || 1),(options[:per_page] || 30),(result.total_hits || 0)
page_total = page * per_page
index = (page.to_i - 1) * per_page
pager = WillPaginate::Collection.new(page, per_page, page_total)
returning WillPaginate::Collection.new(page, per_page, total) do |pager|
pager.replace result[index,per_page]
end
end
在controller中如下使用
results = Page.full_text_search @q
@pages = pages_for(results,:page => 1)
当然山寨的东西,质量不敢保证,不过不用担心,会有售后服务的,只是先写下这个思路和初步的实现(怕忘记了),以后继续使用,会慢慢地完善。
分享到:
- 2008-10-10 00:44
- 浏览 1076
- 评论(4)
- 论坛回复 / 浏览 (4 / 2184)
- 查看更多
相关推荐
acts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_list.raracts_as_...
"acts_as_authenticated" 是一个经典的Ruby on Rails插件,它为Rails应用提供了用户认证功能。在Rails框架中,用户认证通常涉及验证用户身份、管理会话以及处理登录和登出等操作。acts_as_authenticated插件简化了这...
acts_as_list, 用于管理列表的ActiveRecord插件 ActsAsList描述这个 acts_as 扩展提供了对列表中的多个对象进行排序和重新排序的功能。 具有指定的类的类需要在映射的数据库表上定义为整数的position 列。 0.8.0升级...
"acts_as_paranoid" 是一个在Ruby on Rails框架中常用的gem,用于处理数据库记录的软删除(soft delete)。在数据库操作中,通常我们会遇到删除数据的需求,但直接删除可能会导致数据丢失,尤其是在生产环境中。...
在Ruby on Rails框架中,`acts_as_rateable`是一个非常实用的插件,它允许用户对模型进行评分,从而实现简单的打分功能。这个插件是Rails社区中的一个开源项目,旨在简化应用中的评分系统集成。在本篇讨论中,我们将...
#ActsAsCategory acts_as_category (Version 2.0 beta)acts_as_category,是acts_as插件在acts_as_tree风格的Ruby on Rails的ActiveRecord的模式,但有一些额外的功能,以及多种便捷视图助手。例子(有关实例方法和...
acts_as_nested_set是Rails社区中广泛使用的Nested Set库,而BetterNestedSet则是它的增强版,提供了更多功能和优化。本文将深入探讨BetterNestedSet的原理、用法以及相较于acts_as_nested_set的优势。 1. Nested ...
介绍插件,用于对记录进行排序(使用 gem)安装要启用rails_admin_acts_as_list,请将以下内容添加到您的Gemfile : gem 'rails_admin_acts_as_list'gem 'rails_admin' 重要提示: rails_admin_acts_as_list之前必须...
Api-acts_as_api.zip,使在rails中创建api响应变得简单和有趣,一个api可以被认为是多个软件设备之间通信的指导手册。例如,api可用于web应用程序之间的数据库通信。通过提取实现并将数据放弃到对象中,api简化了编程...
就像acts_as_list 一样,但不必使用非标准方法调用(如insert_at)来弄乱您的代码,acts_as_restful_list 使管理列表变得简单。 您可以像更新其他任何内容一样更新 position 属性,其余的都由您来处理。 特点 通过...
支持该分支仅针对Rails 5.2+和Ruby 2.4+ 如果您使用的是Rails 5.1或更早的版本,或者Ruby 2.3或更早的版本,请切换到相应的分支,或者需要一个更旧版本的acts_as_paranoid gem。已知的问题在同一模型上使用acts_as_...
active_record-acts_as, 模拟activerecord模型的多表继承 插件开发已经移动这个项目的积极发展已经转移到了的krautcomputing fork 。 请在那里报告问题并打开 PRs ! ActiveRecord::ActsAs这是对 acts_as_relation的...
使用acts_as_aliased在模型中启用别名: model Company < ActiveRecord::Base acts_as_aliased end 这假设您的公司模型中有一个名为name的列。 您可以通过传递column参数来指定不同的column : model ...
与acts_as_commentable 兼容(但需要更改数据库架构) 要求 此 gem 的 2.x 版本仅适用于 Rails 4 及更高版本。 对于此 gem 的 Rails 3.x 兼容版本,请使用版本 1.2.0。 这个宝石取决于 CollectiveIdea 的 Awesome ...
gem 'acts_as_liked' 然后执行: $ bundle 运行生成器: $ rails generate acts_as_liked 并且不要忘记迁移您的数据库 $ rake db:migrate 用法 可爱的模特 将acts_as_likeable添加到任何模型,它的实例可以被...
gem 'acts_as_commentable' Rails gem 'acts_as_commentable' , '3.0.1' Rails gem 'acts_as_commentable' , git: 'git@github.com:jackdempsey/acts_as_commentable.git' , branch: '2.x' 生成器 Rails 3+ ...
acts_as_shopping_cart 一个简单的购物车实现。 您可以找到示例应用程序。 安装 滑轨3 从0.2.0版开始,不再支持Rails 3。 如果您仍需要在Rails 3应用程序中实现此gem,请使用0-1-x分支 将其包含在您的Gemfile中 ...
总的来说,acts_as_xapian是Rails开发者实现全文搜索功能的一个强大工具,它的存在使得Rails应用在处理大量数据时,依然能提供快速、准确的搜索体验。对于需要提升用户体验的Web应用,这是一个值得考虑的选择。
文档基本用法例如, SubscriptionType是一个 ActiveRecord: require 'acts_as_reference_data'class SubscriptionType < ActiveRecord::Base acts_as_reference_dataend假设已创建迁移以使用各种类型填充此表,...
gem 'acts_as_nps_rateable' 如果要将此gem添加到rails 3应用程序,则应将行更改为: gem 'acts_as_nps_rateable', '=0.0.4' 然后执行: $ bundle 或将其自己安装为: $ gem install acts_as_nps_rateable 一旦...