使用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是一个模型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值