2010-12-08 3 views
2

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

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

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

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

+2

Что опять вопрос? – edgerunner 2010-12-08 06:44:58

+0

Подробнее читайте выше ... – safalmj 2010-12-09 03:27:37

ответ

0

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

<%= 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 

конец

1

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

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

Это будет работать в Rails 3. Если вы используете JQuery, убедитесь, чтобы прочитать this article о том, как правильно установить вещи.

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

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

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

0

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

Смежные вопросы