2

2015年节日快乐——

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

我在跑:

  • 导轨 4.2.4
  • 红宝石 2.2.3
  • ActiveAdmin 1.0.0pre2

我一直遇到这个错误:

找不到输入类 NumericRangeInput

这是我的 config/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 等的潜在问题,但我还不够先进,不知道从哪里开始。任何帮助是极大的赞赏。

4

2 回答 2

2

似乎较新版本的 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

它奏效了。

于 2016-01-02T15:02:32.663 回答
0

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

于 2018-11-15T19:53:01.280 回答