gpt4 book ai didi

ruby-on-rails - 如何在 Ransack 中获得条件组?

转载 作者:行者123 更新时间:2023-12-04 12:28:56 29 4
gpt4 key购买 nike

我在 Ransack 中使用高级搜索,它具有默认的 AND。我已经通过放置 .try(:merge, m: 'or'))

@search = Data.search(params[:q].try(:merge, m: 'or'))

但我无法将 AND/OR 下拉为条件组,如 Ransack 演示中所示 http://ransack-demo.herokuapp.com/users/advanced_search

enter image description here

不幸的是,如何做到这一点 Ransack wiki 没有提及它。

我们的代码

数据 Controller .rb
def search

@search = Data.search(params[:q])
@datum = @search.result(:distinct=>true).paginate(page: params[:page], per_page: 10)

if params[:q].nil?
@datum = Prospect.where(:id => 0).paginate(page: params[:page], per_page: 10)
end

@page = params[:page] || 0
@pids = @search.result(:distinct=>true).pluck(:id)

@search.build_condition
# @search.build_grouping unless @search.groupings.any? (I have tried this code too but this gives an error)
end

路由文件
resources :data do
collection do
get :search
post :search, to: 'data#search'
end
end

数据.html.erb
<script type="text/javascript">
var ids = <%= @pids %>;
</script>

<section class="psf">
<div class="container">
<h1>All Data</h1>
<div class="row">
<div class="col-lg-10">
<div class="form_search">
<%= search_form_for @search, url: search_data_index_path, html: { method: :get, class: "data_search" } do |f| %>
<%= f.condition_fields do |c| %>
<%= render "condition_fields", f: c %>
<% end %>
<p><%= link_to_add_fields "Add Conditions", f, :condition %></p>
<br>
<div class="actions">
<%= f.submit "Search", :class => "btn btn-primary" %>
</div>
<% end %>
</div>

</div>

</div>
<br>
<% if !@pids.nil? %>
<div class="total_count"><b><%= @pids.count %> Records Found.</b></div>
<% end %>

最佳答案

如果你查看高级演示,你会发现这个 m: 'or'被放入条件组散列中,而不是直接放入 q范围。

实现它的最简单方法是添加一个隐藏字段来对字段进行分组,如下所示

<%= search_form_for @search, url: search_data_index_path, html: { method: :get, class: "data_search" } do |f| %>
<%= f.grouping_fields do |g| %>
<%= g.combinator_select %>
<%= g.condition_fields do |c| %>
<%= render "condition_fields", f: c %>
<% end %>
<% end %>
<p><%= link_to_add_fields "Add Conditions", f, :condition %></p>
<br>
<div class="actions">
<%= f.submit "Search", :class => "btn btn-primary" %>
</div>
<% end %>

您也可以在这里查看演示中参数的发送方式

enter image description here

从图片合并参数可以看出在 g下范围

注意
如果您想要 any 的自定义值 all词结帐 Translate module
.

如您所见 world方法回退到 I18n.translate所以在这种情况下,您可以将自定义值放入 en.ymlransack.allransack.all键。

关于ruby-on-rails - 如何在 Ransack 中获得条件组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41182642/

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