`

使用meta_search实现搜索

 
阅读更多
这个搜索还是比较好的,能实现多个条件,单个条件查询,能满足大部分开发的需求
github地址https://github.com/activerecord-hackery/meta_search
开发这个gem的团队推出了改进型,等找到在上传吧
(1)gem "meta_search"
(2)在controller里面的语法
@search = Project.metasearch(params[:search])
    @projects = @search.where(:check => '1').order('id DESC').page(params[:page]).per(20),通过metasearch方法来实现元搜索,也即模糊的形式。
(3)页面,为了方面扩展一般是把搜索作为一个模板,_search.html.erb这样在模板页面就可以方便的添加多个条件。
<%= form_for @search, :url => projects_path, :html => {:method => :get, :class => "form-search"}  do |f| %>
  <div class="conditions">
        <span class="filter_case_name">项目名称:</span><%= f.text_field :name_contains, class:"filter_text"%>

        <span class="filter_case_name">项目性质:</span>
        <select name="search[project_kind_name_contains]" class="publicselect w240">
          <option value>请选择</option>
          <% ProjectKind.where("state='1'").each do |kind| %>
            <% if @search.try(:project_kind_name_contains) == kind.name %>
              <option value=<%= kind.name %> selected><%= kind.name %></option>
            <% elsif %>
              <option value=<%= kind.name %>><%= kind.name %></option>
            <% end %>
          <% end -%>
        </select>
        <%= render "/search_bottom", :f => f %>
      </div>
    </div>
  </div>   
<% end %>
在github里面我们知道运行bundle install之后就会获得很多方法自己去找合适的。我用得比较多点还是contains,如果有ralation关系的话也可以,我找项目地址的时候area_pcc_names_starts_with, project类里面有belongs_to :area也就是commentable_article_type_body_or_commentable_post_type_body_contains关系在前,然后进入关系这个模型,之后在找相应的字段。一般都是从belongs_to一方开始。

想说的是这里的选择下拉框的方式,给name包裹一个search方式,然后取对应模型的字段contains这里的project_kind是一个模型。
分享到:
评论

相关推荐

    meta_version2.rar_grasp_orienteering_orienteering problem

    本项目提供的"meta_version2.rar"压缩包文件包含了一个实现GRASP(Greedy Randomized Adaptive Search Procedure)算法的代码,用于解决定向越野问题。GRASP是一种基于贪婪策略的启发式算法,它结合了随机化和局部...

    android13配置GlobalSearch全局搜索

    GlobalSearch是Android中的一个服务接口,它定义了如何在系统层面实现全局搜索。开发者可以通过实现这个接口来添加自己的搜索服务,使得应用内容可以被全局搜索框检索到。Android 13中,这一服务的注册和配置过程...

    aacc.rar_aacc_android Search demo_android search_android search

    这个Demo是基于一本英文书籍的翻译,并进行了整合,目的是展示如何在Android应用中实现搜索功能。 首先,Android搜索功能的基础是`SearchView`组件,它是Android SDK中的一个视图类,通常被用作ActionBar或Toolbar...

    Elasticsearch-jdbc数据同步配置.zip_elastic-jdbc_elasticsearch_elastics

    在大数据分析和搜索引擎领域,Elasticsearch因其高效、可扩展和实时的搜索能力而被广泛应用。然而,数据往往存储在关系型数据库如MySQL中,为了实现数据的实时或者定期同步到Elasticsearch,Elasticsearch-jdbc插件...

    Android调用系统的浮动搜索框实现搜索功能

    通过以上步骤,你就能够成功地在Android应用中调用系统的浮动搜索框实现搜索功能。提供的压缩包可能包含了两个示例项目,这些项目可以帮助你更深入地理解和实践上述步骤。同时,文档会详细解释每个步骤,确保你能...

    基于次声波匹配显示的孔雀元启发式搜索算法_A Meta-Heuristic Search Algorithm based on

    次声波匹配显示的孔雀元启发式搜索算法(Infrasonic Search Algorithm, ISA)受到了自然界中孔雀的繁殖行为启发。孔雀在求偶过程中展示出的次声波交流方式被用来模拟算法中的信息交换过程。这种算法旨在通过模拟孔雀...

    Elasticsearch技术研讨_104实用知识库分享

    Elasticsearch 的功能实现主要包括基于 Text Embedding 的文本相似性搜索、基于 Lucene 查询原理的性能优化等。Elasticsearch 的功能实现可以帮助开发者更好地理解 Elasticsearch 的功能特性。 七、Elasticsearch ...

    安卓搜索相关相关-实现搜索的自动补全功能.rar

    总的来说,实现搜索自动补全功能涉及到`SearchView`的使用、`AndroidManifest.xml`的配置、`searchable.xml`的定义以及对用户输入的监听和响应。通过理解和应用这些知识点,你可以在Android应用中创建一个高效的搜索...

    Python库 | elasticsearch_django-5.0.1-py2-none-any.whl

    3. **模型映射**:在Django模型类中,定义`Meta`类并指定`index_name`属性来关联Elasticsearch索引。 4. **同步数据**:使用`call_command('es_index', 'app_name', 'model_name')`命令将Django模型数据同步到...

    android 搜索框

    本文将详细介绍如何在Android中实现搜索框,主要关注XML布局和继承RelativeLayout这两种方法,以及它们在API 14及以上版本中的应用。 ### XML布局实现 XML布局是最常见的创建Android界面的方法。在`res/layout`...

    浮动搜索框(SearchManager)毕业设计—(包含完整源码可运行).zip

    6. 实现搜索逻辑,返回搜索结果,并可能更新UI。 三、源码分析 在这个毕业设计项目中,开发者可能包含了以下关键部分的源码: 1. Searchable配置文件(searchable.xml):定义了搜索框的行为和外观。 2. ...

    elasticsearch集成spring开发实例

    在现代大数据分析和实时搜索领域,Elasticsearch(简称 ES)已经成为了广泛使用的工具。它是一个分布式、RESTful 风格的搜索和数据分析引擎,能够处理大量数据并提供快速响应。而Spring框架作为Java企业级应用的事实...

    ActionBarSherlock中的搜索及SearchView的使用

    `SearchView`是Android系统中用于实现搜索功能的组件,它通常集成在Action Bar中,提供用户友好的交互体验。在`ActionBarSherlock`中,`SearchView`的使用对于实现跨版本的搜索功能至关重要。下面将详细介绍如何在`...

    jquery+php实现用户输入搜索内容时自动提示

    这个简单的示例展示了如何使用jQuery和PHP实现搜索提示功能。在实际项目中,你可能需要根据具体需求进行调整,比如从数据库中获取搜索建议、优化搜索算法以提高性能、添加错误处理机制等。此外,还可以考虑使用更...

    elasticsearch ik 分词包

    总结来说,Elasticsearch IK分词插件是实现中文搜索的关键工具,其最大粒度和最细粒度的分词模式适应了不同的应用场景。了解并熟练掌握其安装、配置和优化,对于提升Elasticsearch在中文环境下的搜索性能至关重要。

    google搜索栏效果实现代码

    这可以通过添加一个搜索按钮元素和相应的JavaScript代码实现: ```html &lt;button type="button" class="search-btn"&gt;搜索 ``` ```javascript $('.search-btn').on('click', function() { var query = $('.search-...

    藏经阁-ES Cross Cluster Search生产实践.pdf

    Cross Cluster Search是一种解决大集群痛点的方法,它可以实现跨集群搜索,解决meta信息太多、全量更新压力大、单节点过载等问题。Cross Cluster Search的特点是: * 解决上述痛点 * 带来更多可能的隐患 * 额外的...

    search_field

    例如,`ListView`可以与`SearchDelegate`结合,实现搜索结果的动态展示: ```qml ListView { model: myModel // 假设myModel是已过滤的数据源 delegate: SearchDelegate { text: myModel.displayText // 显示...

    android浮动搜索框(SearchManager).zip

    你需要创建一个ContentProvider来实现搜索建议提供者,并在searchable.xml中配置。在ContentProvider中重写query()方法,返回根据用户输入匹配的建议数据。 五、悬浮窗实现 如果要实现浮动搜索框,你可以考虑使用...

Global site tag (gtag.js) - Google Analytics