`
exquan
  • 浏览: 5158 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

强烈推荐一个高级查询插件Searchgasm

阅读更多
让你复杂的查询代码变得更加优雅:

下面是一个查询用户(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
分享到:
评论
3 楼 superxielei 2008-09-18  
真是个不错的东西,以前都是自己写一些搜索的封装。看来以后会轻松一些。
2 楼 shaquan6776 2008-09-18  
自己实现了个类似的东东,不过比这个烂,正好可以借鉴优化一下。
1 楼 qichunren 2008-09-16  
快速看了一下,不错啊,这个和Where插件有什么不同呢?

相关推荐

    东坡 帝国cms 7.5 TAGS 高级版插件

    综上所述,帝国CMS 7.5的TAGS高级版插件是网站内容管理的一大利器,它能帮助管理员高效地组织和呈现信息,同时提升用户的浏览体验。熟练掌握并运用这个插件,将使你的网站在内容管理和SEO方面更上一层楼。

    帝国cms-TAG高级管理插件.zip

    帝国CMS 7.2 7.5 TAG插件 TAG高级管理工具tags插件SEO利器 一、TAG展示新增功能 TAG伪静态可设置以TAG拼音或TAGID形式,更利于SEO 自带TAG首页功能,方便展示全部TAg 自定义列表排序 二、TAG管理新增功能 批量增加...

    高级搜索Jquery插件2015年02月28日版本

    在本例中,可能的情况是用户在TextBox中输入搜索关键字后,通过点击按钮触发一个JavaScript事件,该事件调用`$.fn.AdvSearch.encode`,将TextBox的值编码并附加到URL的查询字符串中,然后使用Ajax发送请求到服务器...

    Dreamweaver 8 高级表单验证插件

    Dreamweaver 8 高级表单验证插件 笨阿猪高级表单验证插件

    高级AI插件

    高级AI插件高级AI插件高级AI插件高级AI插件高级AI插件高级AI插件

    Rewired - unity手柄控制插件 高级输入控制插件

    手柄输入管理插件,支持多手柄多玩家键位设置 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 ...

    caxa插件 很好用

    描述中提到的“从CAD论坛弄得”,表明用户是通过这种方式找到了适合自己的CAXA插件,并且对其效果非常满意,所以强烈推荐给其他人。 在实际应用中,用户应该注意插件的兼容性,确保其与自己使用的CAXA版本相匹配,...

    TC天使插件4.018

    TS插件遵循COM规范编写支持任何高级语言调用 1、注册插件. 使用TS之前,首先必须得先注册TS—&gt;注册 方法1: 开始-&gt;运行-&gt; "Regsvr32 c:\\TSPlug.dll" 方法2: 用TC自带的 "TC插件辅助工具" 注册 方法3: 用TC注册命令...

    EmEditor中文插件181个 适用所有版本

    总的来说,"EmEditor中文插件181个 适用所有版本"的集合为EmEditor用户提供了一个丰富多样的工具库,使得这款文本编辑器能够更好地适应各种编程任务和工作场景。无论是初级用户还是经验丰富的开发者,都能从中找到...

    安全移除u盘小插件(强烈推荐)

    你还在使用右下角安全移除来移除u盘吗?那你就out了。将此小插件(21k)移动到你的优盘里,安全移除时只需双击次小软件,你的u盘就可以安全移除了。

    dreamweaver网站PHP开发MXP插件

    创建一个JustSo风格的相册插件.mxp 打字效果文字插件.mxp 单元格平均分布插件.mxp 弹出无边小窗口插件.mxp 弹出注释插件.mxp 导出EXEL格式插件.mxp 导出WORD插件.mxp 地址栏图标插件.mxp 调用CSS文件插件.mxp 动态...

    Illustrator插件开发指南

    此外,一个插件文件可以包含多种插件类型,例如图形创建插件可能会实现多个filters和一个插件工具。 总体而言,Illustrator插件开发指南为开发者提供了从基本概念到高级功能实现的全面指导,不仅包括了Illustrator ...

    shopex 插件2几乎包揽现在所有免费插件

    shopex 插件\【插件】485新增5个促销(优惠券).rar shopex 插件\【插件】订单物流自动查询(如淘宝网).zip shopex 插件\【挂件】google翻译.zip shopex 插件\限时秒杀插件ShopEX[1].4.8.rar shopex 插件\显示...

    SPSS中介效应分析插件(Process和mediate插件)

    Mediate则是另一个SPSS插件,专为中介分析设计。它提供了直接和间接效应的估计,以及对中介效应显著性的检验。相比于Process,Mediate的操作更为简洁,适合初学者使用。 - **基本功能**:Mediate主要计算中介效应...

    Eclipse 3.7图形界面设计完美插件--官方推荐!

    这款插件是Eclipse开发环境中的一个强大工具,主要用于简化Java GUI(图形用户界面)的创建和编辑工作。WindowBuilder是Eclipse社区官方推荐的插件之一,它极大地提高了开发者在构建GUI应用时的效率和体验。 Window...

    NotePad++常用插件集合

    包括热门插件compare zen coding emmet jstool tags jump nppexec quicktext nppFTP等等 以及用于php python js等领域开发的插件 便于安装配置 省掉了重装或新装np++的时候一个个下载插件的时间 灰常方便 使用方法...

    29个FE雨雪等特效插件

    标题中的“29个FE雨雪等特效插件”指的是一个包含多个特效插件的集合,主要用于增强视频编辑软件Premiere Pro的视觉效果。这些插件可以为视频增添雨水、雪花或其他天气效果,使得视频场景更加生动逼真。在电影和电视...

    模糊查询下拉框插件

    jb51.net是一个提供各类编程资源和教程的网站,可能包含了实现模糊查询下拉框插件的相关代码示例和教程,对于开发者来说,是一个不错的学习和参考平台。 总之,模糊查询下拉框插件是提升用户交互体验的重要工具,...

    ntko插件web版,插件

    NTKO(New Technology Kernel Object)插件是一款专为Web应用设计的软件组件,它主要功能是提供文档在线预览、编辑、转换以及签名等服务。这个插件在Web环境中为用户提供了与桌面应用相似的文档处理能力,极大地提升...

    mapinfo插件合集(完整版)

    1. SeeSite:这是一个视觉模拟插件,主要用于地形可视化和视线分析。用户可以模拟从一个点到另一个点的视线,评估建筑物、地形或其他障碍物对视线的影响,常用于规划、房地产和通信站点的选址。 2. netplanning:这...

Global site tag (gtag.js) - Google Analytics