Использование gem axlsx Ruby on Rails для экспорта данных через AJAX не работает

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

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

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-файл. Когда я нажимаю, функция ссылка на работает хорошо, но нажатие на функцию 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>

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

🤔 А знаете ли вы, что...
Rails имеет встроенные средства для обработки исключений и ошибок, что упрощает отладку приложений.


616
1

Ответ:

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

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