Rails Ransack - How to include multiple conditions with a ransacker
我正在尝试为我们的搜索页面创建一个 Ransack 部分,该部分将查看学生的成绩表并在每种成绩范围内查找学生。
给定:学生有_许多成绩和成绩所属_类别
我想要一个表单部分,例如:
生物学等级大于 [2]
数学成绩高于 [ 3 ]
最终类似于:
关于如何设置它的任何想法?
您需要建立条件分组。查看 https://github.com/activerecord-hackery/ransack/blob/master/lib/ransack/helpers/form_builder.rb#L74 并按照代码进行操作。 Ransack 演示应用程序也是一个很好的资源。
遗憾的是 Ransack 没有全面的文档。我花了一整天的时间试图让类似的功能发挥作用。
试试这样的:
1 2 3 4 5 6 | <%= 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 加入组。
试试这样的
1 2 3 4 5 6 7 8 9 10 11 | <%= search_form_for @search do |f| %> Grade greater than <%= f.text_field :grades_value_gteq %> Grade category is <%= f.text_field :grades_category_eq #change this eventually to a collection dropdown %> <%= f.submit"Search" %> <% end %> |