gpt4 book ai didi

ruby-on-rails - Rails Ransack - 如何在 ransacker 中包含多个条件

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:00 24 4
gpt4 key购买 nike

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

给定:Student has_many Grades and Grade belongs_to Category

我想要一个像这样的表单部分:生物学等级大于 [ 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 加入组。

关于ruby-on-rails - Rails Ransack - 如何在 ransacker 中包含多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23348140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com