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