2015-12-24 6 views
2

приветствий и Happy Holidays 2015 -Добавление Числовой диапазон фильтрации в ActiveAdmin

Я пытался добавить фильтрацию числовой диапазон за отличную блоге по Boris Stall.

Я бегу:

  • Rails 4.2.4
  • рубин 2.2.3
  • ActiveAdmin 1.0.0pre2

я продолжать работать в эту ошибку:

Unable to find input class NumericRangeInput

Вот мой config/initializers/active_admi п/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 

Я исследовал возможные проблемы, связанные с интеграцией А.А., 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 

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

+0

спасибо @jess. Я попробую. –

+0

В качестве продолжения, позже я переименовал сам класс в 'NumericRangeInput', потому что я заметил, что генерируемые классы CSS называются' filter_filter_numeric_range', и это прослушивало меня, поэтому я переименовал класс, а затем использовал его как 'filter: id, как: numeric_range' – Jess

+0

это работало как шарм. У меня была догадка, что это проблема с именами, но не была уверена, где попробовать изменения. Спасибо миллион за ваши предложения! –

Смежные вопросы