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/