Adding Numeric Range Filtering to ActiveAdmin

为君一笑 提交于 2019-12-13 15:33:34

问题


Greetings and Happy Holidays 2015 --

I tried to add numeric range filtering per the excellent blog post by Boris Stall.

I'm running:

  • Rails 4.2.4
  • Ruby 2.2.3
  • ActiveAdmin 1.0.0pre2

I keep running into this error:

Unable to find input class NumericRangeInput

Here is my 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

I'm simply trying:

filter :id, as: :numeric_range

I've researched the potential issues integrating AA, Ransack, Formtastic, etc., but I'm not advanced enough to know where to go from here. Any help is greatly appreciated.


回答1:


It seems newer versions of ActiveAdmin might have a different strategy for loading or naming other classes in the input module. I noticed that the class name in the file is called FilterNumericRangeInput. So AA must be doing something to convert the name, we just need to figure out which symbol to give to convert properly. So as an experiment, I tried to rename the symbol in app/admin/test.rb to:

filter :id, as: :numeric_range_2

And I got the error:

Unable to find input class NumericRange2Input

So with that hint I tried changing the symbol name to:

filter :id, as: :filter_numeric_range

And it worked.




回答2:


At this point you just need filter :id, as: :numeric



来源:https://stackoverflow.com/questions/34455537/adding-numeric-range-filtering-to-activeadmin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!