2014-01-25 5 views
1

У меня в моей модели около 10 000 записей. На странице index_admin для этой модели я установил config.paginate = false. Таким образом, все 10 000 + записей отображаются по умолчанию.Записи с ограничениями ActiveAdmin на странице индекса

Как я могу ограничить число, чтобы сказать последние 500 записей. Я попытался использовать описанный ниже метод here, но он ничего не делает на индексной странице.

ActiveAdmin.register Post do 
    controller do 
    def scoped_collection 
     Post.all.limit(500) 
    end 
    end 
end 

ответ

-1

Попробуйте ввести код. Замените что-нибудь своим именем модели.

result = Something.find(:all, :order => "id desc", :limit => 5) 

while !result.empty? 
    puts result.pop 
end 
+1

Мне не нужна общая функция. Мне нужно переопределить метод active_admin. –

1

Этот вопрос this code в активном Admin:

module ActiveAdmin 
    class ResourceController < BaseController 
    module DataAccess 

     def per_page 
     return max_csv_records if request.format == 'text/csv' 
     return max_per_page if active_admin_config.paginate == false 

     @per_page || active_admin_config.per_page 
     end 

     def max_csv_records 
     10_000 
     end 

     def max_per_page 
     10_000 
     end 

    end 
    end 
end 

Когда опция paginate конфигурации устанавливаются ложным, то по умолчанию числовых значений, возвращаемых max_per_page. Если вы хорошо с перекрывая его во всем мире, вы можете поместить это в инициализаторе:

# config/initializers/active_admin_data_access.rb 
module ActiveAdmin 
    class ResourceController < BaseController 
    module DataAccess 

     def max_per_page 
     500 # was 10,000 
     end 

    end 
    end 
end 
+0

Спасибо ... позвольте мне проверить ... с вашим предложением –

2

набор пользовательских # строк на странице с контроллером before_filter

controller do 

    before_filter :set_per_page_var, :only => [:index] 

    def set_per_page_var 
    session[:per_page]=params[:per_page]||30 
    @per_page = session[:per_page] 
    end 
end 

и сделать врезку с соответствующими ввод текста (вы можете отобразить его как выпадающий список)

#... 

sidebar('Rows on page', :only => :index) do 
    form do |f| 
    f.text_field nil, 'per_page', :value => session[:per_page] 
    end 
end 
1

Я искал ответа на этот же вопрос. Я не смог ограничить количество записей, поэтому вместо этого я решил разместить значение по умолчанию в одном из моих фильтров, который гарантирует пустую страницу при загрузке.

(Примечание: я украл эту идею из этого StackOverflow вопрос здесь :: Set ActiveAdmin filter default value)

Пример :: В этом примере, я поставил фильтр под названием «my_filter_id» равным «0» в «before_filter» если все параметры пусты.

ActiveAdmin.register MyModel do 
    before_filter my_filter_id: :index do 
    params[:q] = {my_filter_id_eq: 0} if params[:commit].blank? 
    end 
end 
Смежные вопросы