簡體   English   中英

Rails Ransack - 如何使用搜索引擎包含多個條件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM