Отправка динамически созданного файла для загрузки в Rails 3 - PullRequest
3 голосов
/ 25 марта 2011

У меня есть приложение Rails 3, которое при нажатии на ссылку для скачивания на клиенте отправляет ajax-запрос на сервер, чтобы динамически сгенерировать файл и отправить его обратно.Сервер сообщает мне, что файл отправляется:

Отправленные данные test.csv (1.4ms)

, но браузер не предлагает мне загрузить файл.Когда я проверяю запрос ajax, я вижу данные, возвращающиеся в ответе.Буду признателен за любую помощь в получении браузера, чтобы побудить пользователя загрузить файл.Ниже мой код:

Вот мой контроллер:

def generate_file
  list = List.find(params[:id])
  file = ''
  list.contacts.all.each do |contact|
    file << contact.firstname + ',' + contact.lastname + '\n'
  end
  send_data file, :filename => list.name + '.csv', :type => 'text/csv'
end

Вот мой код на стороне клиента:

$j('.download').click(function() {
  var id = $j(this).attr("id");
  $j.ajax({
   type: "POST",
   url: "/lists/" + id + "/generate_file"
 });
});

Вот мои маршруты.rb

resources :contacts
resources :lists do
   member do 
     post 'generate_file'
   end
end

1 Ответ

5 голосов
/ 25 марта 2011

Отправка файлов через ajax не так легко, как вы могли бы надеяться.Возможно, вам лучше не использовать ajax и просто использовать обычный HTTP-запрос, если только по какой-то причине не важно использовать ajax.

Здесь можно найти хороший ответ на подобный вопрос: Как вы вызываетескачать файл с link_to_remote в рельсах?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...