将数字范围过滤添加到ActiveAdmin

时间:2015-12-24 16:31:20

标签: activeadmin formtastic ransack numeric-ranges

2015年问候和节日快乐 -

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

我正在跑步:

  • Rails 4.2.4
  • Ruby 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等的潜在问题,但我还不够先进,不知道从哪里开始。非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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

它有效。

答案 1 :(得分:0)

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