У меня есть такой элемент в моем файле erb:
<%= submit_tag "Generate Report (Selected Assets)", :type => 'button', :id => "selectgenbutton" %>
Тогда у меня есть фрагмент в том же файле erb, который выглядит следующим образом:
<script>
$(document).ready(function() {
var table = $('#assets').DataTable();
(...various unrelated stuff)
$('#selectgenbutton').click( function () {
info = [];
for (var i = 0; i < table.rows('.selected').data().length; i++) {
info.push(table.rows('.selected').data()[i][0]);
}
$.ajax({
url: "/gen_csv_selected/",
data: {info:info}
});
} );
} );
</script>
Как вы могли быожидайте, у меня есть четко определенные данные и т. д. - я не буду показывать этот код здесь.В моем route.rb есть:
match '/gen_csv_selected/' => 'assets#gen_csv_selected', via: :get
В моем AssetsController запускается gen_csv_selected!Вот код для этого метода:
def gen_csv_selected
`echo "GEN CSV SELECTED triggered with: #{params.to_s}\n" >> /opt/pesto/current/tveadslog.txt`
send_data Asset.to_csv, stream: 'true', filename: "assets-#{DateTime.now.strftime('%Y%m%d%H%M%S')}.csv"
end
Модель ресурсов имеет четко определенную функцию to_csv - поверьте мне, она работает.Я знаю, что это работает, потому что у меня есть сценарий, в котором он работает нормально - я вызываю его через:
<%= button_to "Generate Report (All Assets)", assets_path(format: "csv"), method: :get, :form => { :id => "genbutton" } %>
А затем по индексу в AssetsController:
def index
respond_to do |format|
format.csv {
send_data Asset.to_csv, stream: 'true', filename: "assets-#{DateTime.now.strftime('%Y%m%d%H%M%S')}.csv"
}
end
end
Это работает полностьюхорошо в приведенном выше сценарии - но проблема в том, что мне нужно использовать массив info [] в gen_csv_selected.Я еще не реализовал эту часть метода - но дело в том, что я не могу использовать button_to и response_to в моем основном сценарии - вместо этого мне нужно использовать Ajax-вызов для вызова метода контроллера, который загружает CSV в браузер.И проблема в том, что из моего эха я вижу, что мой метод запускается ... но в браузер не приходит CSV.Я даже захожу в свой журнал
Started GET "/gen_csv_selected/?info%5B%5D=1" for 127.0.0.1 at 2018-09-18 10:52:47 -0400
Processing by AssetsController#gen_csv_selected as */*
Parameters: {"info"=>["1"]}
(...irrelevant SQL)
Sent data assets-20180918105247.csv (0.9ms)
Completed 200 OK in 17ms (Views: 0.5ms | ActiveRecord: 1.1ms)
Так что он утверждает, что мне прислали CSV ... но не CSV.Любая помощь о том, как использовать вызов Ajax, чтобы помочь в создании CSV?