Использование gem axlsx Ruby on Rails, экспорт данных через AJAX не работает - PullRequest
0 голосов
/ 27 января 2019

Я использую gem gem 'axlsx_rails' и хочу экспортировать данные в файл Excel, но мне нужно отправить данные на контроллер через AJAX, например, флажки, отмеченные в js или выбранные элементы.Проблема в том, что с ajax данные отправляются на контроллер, но файл xlsx не загружается, а работает с помощью функции rails Link-to .

Это моя функция в контроллер .Он отправляет переменную в файл xlsx, который отображает только атрибут name для user .Ничего страшного.

def export_xlsx_report_table
    enterprise = current_user.enterprise
    p "Params!!"
    p params
    @user = User.where(id: params[:user_id])
end

Это моя функция ajax.Я изменил URL, удалив последний .xlsx и все еще не работает

$.ajax({
            type: "get",
            url: "/export_xlsx_report_table.xlsx",
            dataType: "json",
            data: { user_id: 1 },
            beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
        }).done(function(data){

        });

Это HTML-файл.Когда я щелкаю функцию link_to , она работает хорошо, но нажатие на функцию js переходит к контроллеру, но ничего не происходит.

<%= link_to "Exportar reporte", export_xlsx_report_table_path(:user_id => 1, format: "xlsx"), class: 'btn btn-default btn-sm' %>

 <a onclick="report_sales.export_report()" class="btn blue"> EXPORTAR REPORTE</a>

Спасибо за любую помощь, которую вы можете мне оказать.

1 Ответ

0 голосов
/ 28 января 2019

Вы не можете загрузить файл на диск из JS: это проблема безопасности.

Посмотрите на сообщение в блоге ниже для хорошего обхода - http://johnculviner.com/post/2012/03/22/Ajax-like-feature-rich-file-downloads-with-jQuery-File-Download.aspx

...