繁体   English   中英

Rails Ransack - 如何使用搜索引擎包含多个条件

[英]Rails Ransack - How to include multiple conditions with a ransacker

我正在尝试为我们的搜索页面创建一个Ransack部分,该部分将查看学生的成绩表,并找到每种成绩的范围内的学生。

鉴于:学生has_many成绩和成绩belongs_to类别

我想要一个表格部分,如:生物学成绩比[2]数学成绩更高[3]

最终类似于: SELECT... WHERE (grade.value >= 2 AND grade.category_id = 1) AND (grade.value >= 3 AND grade.category_id = 2)

关于如何设置的任何想法?

您需要构建条件分组。 请查看https://github.com/activerecord-hackery/ransack/blob/master/lib/ransack/helpers/form_builder.rb#L74并按照代码进行操作。 Ransack演示应用程序也是一个很好的资源。

令人遗憾的是,Ransack没有全面的文档。 我花了一整天时间尝试做类似的功能。

尝试这样的事情:

<%= hidden_field_tag 'q[c]', 'or' %>
<% Category.each_with_index do |category, i| %>
  <%= hidden_field_tag "q[g][#{i}][m]", 'and' %>
  <%= text_field_tag "q[g][#{i}][c][0]", 'grades_value_gteq' %>
  <%= text_field_tag "q[g][#{i}][c][1]", 'grades_category_eq' %>
<% end %>

您正在Ransack内构建条件分组。 在每个内部,您使用AND加入条件,然后使用OR加入组。

尝试这样的事情

<%= search_form_for @search do |f| %>
  <div class="field">
    Grade greater than
    <%= f.text_field :grades_value_gteq %>
  </div>
  <div class="field">
    Grade category is
    <%= f.text_field :grades_category_eq #change this eventually to a collection dropdown %>   
  </div>
  <div class="actions"><%= f.submit "Search" %></div>
<% end %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM