[英]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.