gem Ransack

Ransack

Ransack 是一个支持搜索和排序的 gem。可以在这里看到详细介绍。

安装

gem ransack

然后

bundle install

使用

View中

使用ransack提供的帮助方法生成表单

<%= search_form_for @q, html: {class: "navbar-form navbar-left"} do |f|  %>
  <div class="form-group">
    <%= f.search_field :name_or_description_cont, class: "form-control", placeholder: "输入商品名"  %>
    <%= f.submit "搜索", class: "btn btn-warning"  %>

    <%=sort_link(@q, :name)  %>
  </div>
<% end -%>

上面代码中的name_or_description_cont指搜索namedescription
sort_link则指可以通过点击该链接来按照name进行排序

cotroller中

  def index
    @q = Product.ransack(params[:q])
    @products = @q.result(distinct: true)
  end

如此即可。当然还有很多用法,可参考这里

ranscak的一些搜索条件

来源:https://ruby-china.org/topics/29556

eq: "等于"
eq_any: "等于任意值"
eq_all: "等于所有值"
not_eq: "不等于"
not_eq_any: "不等于任意值"
not_eq_all: "不等于所有值"
matches: "符合"
matches_any: "符合任意条件"
matches_all: "符合所有条件"
does_not_match: "不符合"
does_not_match_any: "符合任意条件"
does_not_match_all: "不符合所有条件"
lt: "小于"
lt_any: "小于任意一个值"
lt_all: "小于所有值"
lteq: "小于等于"
lteq_any: "小于等于任意一个值"
lteq_all: "小于等于所有值"
gt: "大于"
gt_any: "大于任意一个值"
gt_all: "大于所有值"
gteq: "大于等于"
gteq_any: "大于等于任意一个值"
gteq_all: "大于等于所有值"
in: "被包含"
in_any: "被任意值包含"
in_all: "被所有值包含"
not_in: "不被包含"
not_in_any: "不被任意值包含"
not_in_all: "不被所有值包含"
cont: "包含"
cont_any: "包含任意一个值"
cont_all: "包含所有值"
not_cont: "不包含"
not_cont_any: "不包含任意一个值"
not_cont_all: "不包含所有值"
start: "以改值开始"
start_any: "以任意一个值开始"
start_all: "以所有值开始"
not_start: "不以改值开始"
not_start_any: "不以任意一个值开始"
not_start_all: "不以所有值开始"
end: "以改值结尾"
end_any: "以任意一个值结尾"
end_all: "以所有值结尾"
not_end: "不以改值结尾"
not_end_any: "不以任意一个值结尾"
not_end_all: "不以所有值结尾"
'true': "等于true"
'false': "等于false"
present: "有值"
blank: "为空"
'null': "是null"
not_null: "不是null"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最近开始接触内网,刚开始觉得畅言网代码挺乱的,但是跟内网比起来真是小巫见大巫,看过内网后,感觉畅言网太清爽了,瞬间...
    nasy阅读 1,399评论 3 2
  • 说明本次redis集群安装在rhel6.8 64位机器上,redis版本为3.2.8,redis的gem文件版本为...
    读或写阅读 15,225评论 3 9
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,992评论 19 139
  • 注意:我在此处检查的时候安装的时候遇到了一个问题,内容如下ERROR:While executing gem .....
    XLsn0w阅读 3,094评论 0 0
  • 文/1977 (一) 我现在活着。当我吃东西时,就只管吃。当我走路时,就只管走。如果必须去打仗,今天死还是明天死对...
    1977阅读 1,223评论 13 13