Rails: экспорт таблицы CSV на основе параметров URL - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь экспортировать таблицу CSV на основе параметров в URL в Rails 4.

Параметры URL выглядят так: "classes? Date = 2018-08-01" и в зависимости от даты URL представленияизменяет отображаемую таблицу с данными за указанный месяц.Я хочу экспортировать эти данные.Однако кнопка «Экспорт» всегда загружает только данные за текущий месяц.Что я делаю не так?

Я добавил упрощенный код, а не точную копию.Поэтому, если вам нужно увидеть что-то еще из кода, напишите комментарий.

Контроллер:

def index
    @date = if params[:date].present?
            Time.zone.parse(params[:date])
            else
            Time.zone.now

    @classes = Class.includes(:teacher).on_month(@date.to_date)

    respond_to do |format|
        format.html
        format.csv { send_data @classes.to_csv }
    end
end

Вид:

= link_to 'Export', classes_path(@classes, format: :csv)

Модель:

def self.to_csv
    column_names = %w{ Teacher Class }

    CSV.generate(headers: true) do |csv|
        csv << column_names

        all.each do |class|
            csv << [class.teacher.name, class.class_name]
        end
    end
end

1 Ответ

0 голосов
/ 22 октября 2018

В вашей ссылке на экспорт вы должны включить дату вместо классов, поскольку в вашем контроллере, если отсутствует params[:date], то вы используете текущую дату.

= link_to 'Export', classes_path(date: @date, format: :csv)

...