让你复杂的查询代码变得更加优雅:
下面是一个查询用户(User)的例子:
关系:UserGroup => User => Order (=> = has_many)
可查询条件:first_name(包含),total(Order中,大于),name(开始于)
Controller的代码
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def index
@search = User.new_search(params[:search])
@users, @users_count = @search.all, @search.count
end
end
View的代码
# app/views/users/index.html.erb
<% if @users_count > 0 %>
<%= @users_count %> users found
<table border="1" cellpadding="5">
<tr>
<th><%= order_by_link :id %></th>
<th><%= order_by_link :user_group => :name %></th>
<th><%= order_by_link :first_name %></th>
<th><%= order_by_link :last_name %></th>
<th><%= order_by_link [:email, :first_name] %></th>
</tr>
<% @users.each do |user| %>
<tr>
<td><%= user.id %></td>
<td><%= user.user_group ? user.user_group.name : "-" %></td>
<td><%= user.first_name %></td>
<td><%= user.last_name %></td>
<td><%= user.email %></td>
</tr>
<% end %>
</table>
<br />
<br />
Per page: <%= per_page_select %>
<% if @search.page_count > 1 %>
<br />Page: <%= page_select %>
<% end %>
<% else %>
No users were returned
<% end %>
# app/views/users/index.html.erb
<% form_for @search do |f| %>
<fieldset>
<legend>Search Users</legend>
<% f.fields_for @search.conditions do |users| %>
First name keywords:<br />
<%= users.text_field :first_name_keywords %><br />
<br />
<% users.fields_for users.object.orders do |orders| %>
Has orders with a total greater than:<br />
$<%= orders.text_field :total_gt %><br />
<br />
<% end %>
<% users.fields_for users.object.user_group do |user_group| %>
Belongs to user group with name that starts with:<br />
<%= user_group.text_field :name_starts_with %><br />
<br />
<% end %>
<% end %>
</fieldset>
<%= f.submit "Search" %>
<% end %>
看见没,controller里面的代码相当简洁,在view里面定义查询条件时,还可以使用后缀:
_keywords表示contains(顺便说一下_keywords是contains的扩展,一个真正的关键字搜索。它过滤一些无意义的词语,如“and”,“the”等。),
_gt表示大于,
_starts_with表示以某某开头。。。。
太方便了,还自带翻页,可选AJAX。。。。。
大家自己看吧
DEMO:
http://searchgasm_example.binarylogic.com/rails_ajax/users
更多介绍:
Tutorial: Pagination, ordering, and searching with Searchgasm
插件下载:
http://github.com/binarylogic/searchgasm/tree/master
分享到:
- 2008-09-12 21:35
- 浏览 1011
- 评论(3)
- 论坛回复 / 浏览 (3 / 3359)
- 查看更多
相关推荐
综上所述,帝国CMS 7.5的TAGS高级版插件是网站内容管理的一大利器,它能帮助管理员高效地组织和呈现信息,同时提升用户的浏览体验。熟练掌握并运用这个插件,将使你的网站在内容管理和SEO方面更上一层楼。
帝国CMS 7.2 7.5 TAG插件 TAG高级管理工具tags插件SEO利器 一、TAG展示新增功能 TAG伪静态可设置以TAG拼音或TAGID形式,更利于SEO 自带TAG首页功能,方便展示全部TAg 自定义列表排序 二、TAG管理新增功能 批量增加...
"dw表单验证高级插件-asp表单验证高级插件-测试通过"这个标题暗示了我们正在讨论的是一个针对Dreamweaver的高级插件,用于增强ASP(Active Server Pages)平台上的表单验证功能,并且已经通过了测试,证明其功能稳定...
在本例中,可能的情况是用户在TextBox中输入搜索关键字后,通过点击按钮触发一个JavaScript事件,该事件调用`$.fn.AdvSearch.encode`,将TextBox的值编码并附加到URL的查询字符串中,然后使用Ajax发送请求到服务器...
Dreamweaver 8 高级表单验证插件 笨阿猪高级表单验证插件
在"服务器行为"--"Basic-UltraDev"中可以使用并查看. This is a suite of three Recordset Navigation Server Behaviors that work with UltraDev 1 and UltraDev 4. They provide a list of links for navigating ...
这一部分通常会介绍插件开发的基本概念,包括Eclipse插件体系结构、OSGi框架以及如何创建第一个Eclipse插件项目。开发者会学习到Plugin.xml文件的重要性,它是描述插件元数据的关键,包括插件依赖、提供的服务、激活...
高级AI插件高级AI插件高级AI插件高级AI插件高级AI插件高级AI插件
手柄输入管理插件,支持多手柄多玩家键位设置 Rewired is an advanced input system that completely redefines how you work with input, giving you an unprecedented level of control over one of the most ...
描述中提到的“从CAD论坛弄得”,表明用户是通过这种方式找到了适合自己的CAXA插件,并且对其效果非常满意,所以强烈推荐给其他人。 在实际应用中,用户应该注意插件的兼容性,确保其与自己使用的CAXA版本相匹配,...
TS插件遵循COM规范编写支持任何高级语言调用 1、注册插件. 使用TS之前,首先必须得先注册TS—>注册 方法1: 开始->运行-> "Regsvr32 c:\\TSPlug.dll" 方法2: 用TC自带的 "TC插件辅助工具" 注册 方法3: 用TC注册命令...
总的来说,"EmEditor中文插件181个 适用所有版本"的集合为EmEditor用户提供了一个丰富多样的工具库,使得这款文本编辑器能够更好地适应各种编程任务和工作场景。无论是初级用户还是经验丰富的开发者,都能从中找到...
你还在使用右下角安全移除来移除u盘吗?那你就out了。将此小插件(21k)移动到你的优盘里,安全移除时只需双击次小软件,你的u盘就可以安全移除了。
标题中的“29个FE雨雪等特效插件”指的是一个包含多个特效插件的集合,主要用于增强视频编辑软件Premiere Pro的视觉效果。这些插件可以为视频增添雨水、雪花或其他天气效果,使得视频场景更加生动逼真。在电影和电视...
创建一个JustSo风格的相册插件.mxp 打字效果文字插件.mxp 单元格平均分布插件.mxp 弹出无边小窗口插件.mxp 弹出注释插件.mxp 导出EXEL格式插件.mxp 导出WORD插件.mxp 地址栏图标插件.mxp 调用CSS文件插件.mxp 动态...
例如,一个简单的插件可能仅包含一个改变网页背景色的功能。在这个例子中,`content_script.js`将检测到网页加载完成,然后使用JavaScript修改网页的背景颜色。而`manifest.json`会声明这个插件需要"activeTab"权限...
此外,一个插件文件可以包含多种插件类型,例如图形创建插件可能会实现多个filters和一个插件工具。 总体而言,Illustrator插件开发指南为开发者提供了从基本概念到高级功能实现的全面指导,不仅包括了Illustrator ...
Mediate则是另一个SPSS插件,专为中介分析设计。它提供了直接和间接效应的估计,以及对中介效应显著性的检验。相比于Process,Mediate的操作更为简洁,适合初学者使用。 - **基本功能**:Mediate主要计算中介效应...
今天我们将探讨一个专门针对CATIA的插件,该插件能够自动生成圆柱直斜齿轮、圆锥齿轮以及齿轮轴,极大地提高了设计效率。 这款名为“CATIA圆柱直斜/圆锥齿轮/齿轮轴生成插件”的工具,是由一位开发者通过利用Catia...
这款插件是Eclipse开发环境中的一个强大工具,主要用于简化Java GUI(图形用户界面)的创建和编辑工作。WindowBuilder是Eclipse社区官方推荐的插件之一,它极大地提高了开发者在构建GUI应用时的效率和体验。 Window...