Создать PDF-файл с помощью вызова AJAX - PullRequest
2 голосов
/ 08 декабря 2010

Я пытаюсь сгенерировать файл PDF с помощью вызова AJAX в Rails3. Следующий код генерирует PDF-файл, который я создал, используя гем PRAWN.

 <%= link_to "Generate pdf", books_path(@book, :format => 'pdf') %>

Я не хочу, чтобы пользователь просматривал PDF, пока не закажет его. Итак, цель - создать файл PDF на сервере.

Любые идеи или мысли высоко ценятся.

Ответы [ 3 ]

1 голос
/ 08 декабря 2010

Используйте это, убедитесь, что ваше удаленное действие не возвращает PDF, а просто генерирует и сохраняет его на сервере.

link_to "Generate PDF", prepare_books_path(@book), :remote => true, :method => :put

Это будет работать в Rails 3. Если вы используете jQuery, обязательно прочитайте эту статью о том, как правильно все настроить.

ВашДействие контроллера может выглядеть следующим образом:

def prepare
  # Do your thing to generate the PDF
  render :text => "PDF Generated", :status => 200
end

Я использовал метод PUT, потому что вы изменяете состояние ваших данных (например, вы генерируете что-то новое, вы не хотите, чтобы бот или сканер автоматическиназывать это).

0 голосов
/ 08 декабря 2010

Спасибо, Арьеян. Я изменил ваш код следующим образом, и он сделал то, что хотел.

 <%= link_to "Generate Story Book", pdfbook_stories_path(:format => 'pdf'), :remote => true %> 

А для контроллера

def pdfbook
    @stories = current_account.stories
    respond_to do |format|
        format.pdf {}
    end

конец

0 голосов
/ 08 декабря 2010

Во-первых, меня удивляет, почему вы делаете что-то по запросу, например, генерируете PDF, когда пользователь не ожидает этого действия.Не лучше ли генерировать PDF только тогда, когда пользователь запрашивает его?

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