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

标签 ruby-on-rails ruby search ransack

我正在尝试为我们的搜索页面创建一个 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/

相关文章:

javascript - Rails 在 javascript url 中添加对象

MySQL运行时报错 `rails server`

ruby-on-rails - 我如何按帐户确定 acts_as_taggable_on_stereoids 的范围?

c++ - 在二叉树中搜索

ruby-on-rails - Rspec 不改变创建计数

ruby-on-rails - Rails 首先或通过一个值初始化,但如果创建则添加更多值

ruby - 在 datamapper (ruby) 中使用 SQL 函数作为字段分组

ruby-on-rails - Ruby 用变量解析 DateTime

php - 仅在前端将搜索结果限制为 WooCommerce 产品

c - 搜索 txt 文件然后在控制台打印 txt 文件并为搜索的字符串着色