繁体   English   中英

洗劫过滤条件下拉列表

[英]ransack filter criteria dropdown

我将Ransack gem的当前版本与Rails 5和MySQL结合使用,并希望实现一个搜索表单,其中可以有两个选择字段:

1)第一个下拉选择列表应包含表列属性,例如 名,姓氏,街道

2)第二个下拉选择列表应包含“等于”,“不是”,“包含”之类的运算符

然后是搜索关键字的输入字段和提交按钮。

在代码中,它应该看起来像这样:

<%= search_form_for @search do |f| %>
  <%= f.select :select_criteria, options_for_select([
        ['first name', :first_name], 
        ['last name', :last_name], 
        ['street', :street]
        ]), @search.select_criteria %>
  <%= f.select :operator, options_for_select([
      ['contains', :contains], 
      ['is not', :is_not], 
      ['equals', :equals]
      ]), @search.operator %>
  <%= f.search_field :term %>
  <%= f.submit "filter" %>
<% end %>

但是我在涉及这种情况的ransack文档中找不到任何示例。

看起来如何正确?

尝试这样的事情。 我已经在应用程序中使用了它。 这使用了ransack演示应用程序中显示的技术。

<%= search_form_for @search do |f| %>
  <%= f.grouping_fields(f.object.new_grouping) do |g| %>
    <%= g.condition_fields(g.object.new_condition) do |c| %>
      <%= c.attribute_fields do |a| %>
        <%= a.attribute_select only: %i(id) %>
      <% end %>
      <%= c.predicate_select only: %i(cont not_eq eq) %>
      <%= c.value_fields do |v| %>
        <%= v.text_field :value %>
      <% end %>
    <% end %>
  <% end %>
  <%= f.submit "filter" %>
<% end %>

Ransack可以处理一组条件并一次搜索所有条件。 在您的情况下,您可以为一组提供一个条件。 我知道这似乎很冗长,但是我不确定使用sacksack会更简单(虽然可能有一种方法)。

我要说的关键是f.grouping_fields(f.object.new_grouping)g.condition_fields(g.object.new_condition) 这些工作类似于fields_for ,因为您需要至少一个分组设置才能使该块呈现任何内容。

您可以在此处阅读有关谓词的完整文档。 这些值可以提供给c.predicate_selectonly选项。 如果需要,您还可以轻松构建自定义谓词

ransack演示应用程序ransack很好的文档来源。 例如,这是他们构建高级搜索表单的方式 您还可以查看高级搜索实时演示

这是高级搜索演示的屏幕截图。 它看起来与您要实现的目标相对相似。

洗劫高级搜索示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM