Добавление фильтрации по числовому диапазону в 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
И это сработало.