Добавление фильтрации по числовому диапазону в ActiveAdmin

Поздравления и счастливые праздники 2015 -

Я попытался добавить фильтрацию числового диапазона в отличном сообщении в блоге Бориса Сталла.

Я бегу:

  • Rails 4.2.4
  • Ruby 2.2.3
  • ActiveAdmin 1.0.0pre2

Я продолжаю сталкиваться с этой ошибкой:

Невозможно найти входной класс NumericRangeInput

Вот мой конфиг / инициализаторы /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 ответа

Кажется, что более новые версии ActiveAdmin могут иметь другую стратегию для загрузки или именования других классов в модуле ввода. Я заметил, что имя класса в файле называется FilterNumericRangeInput, Поэтому АА должна что-то делать для преобразования имени, нам просто нужно выяснить, какой символ дать для правильного преобразования. В качестве эксперимента я попытался переименовать символ в app/admin/test.rb чтобы:

filter :id, as: :numeric_range_2

И я получил ошибку:

Unable to find input class NumericRange2Input

Таким образом, с этой подсказкой я попытался изменить имя символа на:

filter :id, as: :filter_numeric_range

И это сработало.

На данный момент вам просто нужно filter :id, as: :numeric

Другие вопросы по тегам