Rails 5: экспорт набора результатов Ransack с помощью axlsx

Я пытаюсь сгенерировать файл Excel, используя гем Axlsx на основе набора результатов Ransack gem.

контроллер:

@q = Candy.ransack(params[:q])
@candies = @q.result.all

Когда я вызываю @candies с параметрами типа "шоколад" в представлении, используя драгоценный камень Ransack, я получаю 30 или около того результатов из 600. Он был успешно отфильтрован!

Но когда я загружаю @candies, используя axlsx, используя:

//index.xlsx.axlsx

    require 'axlsx'
    xlsx_package = Axlsx::Package.new

    workbook = xlsx_package.workbook

    workbook.add_worksheet(name: "Candies") do |sheet|
    sheet.add_row ["id", "name", "type", "date"]

        @candies.each do |candy|
             sheet.add_row [candy.id, candy.name, candy.type, candy.date]
        end
    end

Он генерирует файл со всеми 600 записями!

Этот вопрос очень похож на результаты поиска Ransack - to_xls? Однако я столкнулся с той же проблемой при использовании гема axlsx вместо гема to_xls!

2 ответа

  • Объедините параметры, чтобы включить соответствующий тип формата, который вы загружаете. Соответствующий путь для моего приложения: search_shifts_path - ваш будет отличаться, поэтому, пожалуйста, измените его соответствующим образом.

Затем убедитесь, что вы разрешили соответствующий параметр в вашем контроллере. Учитывая, что мы не меняем никаких полей, мы можем безопасно сделать это:

def search
  params.permit![:format] # must permit this

  @q = Shift.ransack(params[:q])
  @shifts = @q.result

  respond_to do |format|
    format.xlsx
    format.html
  end

конец

@q = Candy.ransack(params[:q])
@candies = @q.result.page
puts "total record = #{@candies.count}"

Я думаю, вы установили ограничение на отображение страниц в пользовательском интерфейсе. Используйте.page для фильтрации и отправки той же переменной var в файл axslx.

Ваш результат поиска должен быть без "всего"

@q = Candy.ransack(params[:q])
@candies = @q.result
put "total record = ", @candies.count

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

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