ActiveAdmin中的默认字符串过滤器具有以下选择选项:

  • 包含
  • 等于
  • 开头
  • 结尾

    这会在字符串搜索旁边显示一个下拉菜单,您可以在其中选择这些选项。

    我的要求是让过滤器使用包含搜索条件但不显示下拉列表/选择来执行此操作。因此,它将仅具有一个用于搜索的输入框,没有用于选择包含的选择。

    我最初是通过创建部分来实现的,但这是有问题的,因为那时它无法与ActiveAdmin提供的其他过滤器一起使用。这是局部图像:

    我目前的想法是创建一个执行此操作的自定义过滤器。

    因此,以下是ActiveAdmin中字符串过滤器的标准代码。如何将其修改为默认为包含而不显示下拉列表?我试过删除过滤器选项,但这不起作用。有任何想法吗?

    ActiveAdmin使用Ransack和Formtastic
    module ActiveAdmin
      module Inputs
        class FilterStringInput < ::Formtastic::Inputs::StringInput
          include FilterBase
          include FilterBase::SearchMethodSelect
    
          filter :contains, :equals, :starts_with, :ends_with
    
          # If the filter method includes a search condition, build a normal string search field.
          # Else, build a search field with a companion dropdown to choose a search condition from.
          def to_html
            if seems_searchable?
              input_wrapping do
                label_html <<
                builder.text_field(method, input_html_options)
              end
            else
              super # SearchMethodSelect#to_html
            end
          end
    
        end
      end
    end
    

    最佳答案

    要删除谓词下拉列表,可以使用Ransack的基于字符串的查询界面。例如,如果您有一个带有ActiveRecord属性的User name类,并且想要在其上包含过滤器,则可以执行以下操作:

    ActiveAdmin.register User do
      filter :name_cont, label: 'User name'
    end
    

    这将生成:

    并将搜索名称中包含引入的输入的Users

    关于ruby-on-rails - 在ActiveAdmin中创建一个自定义字符串过滤器,默认为包含并且不显示字符串过滤器选择下拉列表-Formtastic&Ransack,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26036111/

    10-16 05:41