【问题标题】:Adding Numeric Range Filtering to ActiveAdmin向 ActiveAdmin 添加数值范围过滤
【发布时间】:2015-12-24 16:31:19
【问题描述】:

您好,2015 年节日快乐 --

我尝试根据Boris Stall 的优秀博文添加数字范围过滤。

我在跑步:

  • Rails 4.2.4
  • Ruby 2.2.3
  • ActiveAdmin 1.0.0pre2

我一直遇到这个错误:

找不到输入类 NumericRangeInput

这是我的配置/initializers/active_admin/filter_numeric_range_input.rb

module ActiveAdmin
  module Inputs
    class FilterNumericRangeInput < ::Formtastic::Inputs::StringInput # Add filter module wrapper
      include ActiveAdmin::Inputs::Filters::Base

      def to_html
        input_wrapping do
          [ label_html,
            builder.text_field(gt_input_name, input_html_options(gt_input_name)),
            template.content_tag(:span, "-", :class => "seperator"),
            builder.text_field(lt_input_name, input_html_options(lt_input_name)),
          ].join("\n").html_safe
        end
      end

      def gt_input_name
        "#{method}_gteq"
      end
      alias :input_name :gt_input_name

      def lt_input_name
        "#{method}_lteq"
      end

      def input_html_options(input_name = gt_input_name)
        current_value = @object.send(input_name)
         { :size => 10, :id => "#{input_name}_numeric" , :value => current_value }
      end
    end
  end
end

我只是在尝试:

filter :id, as: :numeric_range

我已经研究了集成 AA、Ransack、Formtastic 等的潜在问题,但我还不够先进,不知道从哪里开始。非常感谢任何帮助。

【问题讨论】:

    标签: activeadmin formtastic ransack numeric-ranges


    【解决方案1】:

    似乎较新版本的 ActiveAdmin 可能有不同的策略来加载或命名输入模块中的其他类。我注意到文件中的类名叫做FilterNumericRangeInput。所以 AA 必须做一些事情来转换名称,我们只需要弄清楚要正确转换的符号。所以作为一个实验,我尝试将app/admin/test.rb中的符号重命名为:

    filter :id, as: :numeric_range_2
    

    我得到了错误:

    Unable to find input class NumericRange2Input
    

    所以有了这个提示,我尝试将符号名称更改为:

    filter :id, as: :filter_numeric_range
    

    它奏效了。

    【讨论】:

    • 作为后续,后来我将类本身重命名为 NumericRangeInput,因为我注意到生成的 CSS 类被称为 filter_filter_numeric_range,这让我很烦恼,所以我重命名了类然后使用它是filter :id, as: numeric_range
    • 这就像一个魅力。我有预感这是一个命名问题,但不确定在哪里尝试更改。感谢您的建议!
    【解决方案2】:

    此时你只需要filter :id, as: :numeric

    【讨论】:

    • 这不过滤范围,它只给出“大于、等于、小于”下拉菜单。
    猜你喜欢
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-07
    • 2021-09-08
    • 1970-01-01
    相关资源
    最近更新 更多