2010-06-08 3 views
1

У меня есть вложение файла PDF, сохраненное в облаке. Файл прикреплен с помощью attachment_fu. Все, что я сделать, чтобы отобразить его в представлении является:Показать файл pdf inline в приложении Rails

<%= image_tag @model.pdf_attachment.public_filename %> 

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

Но только на Mac.

В Windows браузеры будут отображать сломанное изображение. Отчет об инструментах разработчика Chrome: «Ресурс интерпретируется как изображение, но передается с помощью приложения типа MIME/pdf».

Я также попытался отправки файла из контроллера:

в PdfAttachmentsController:

def send_pdf_attachment 
    pdf_attachment = PdfAttachment.find params[:id] 
    send_file pdf_attachment.public_filename, 
    :type => pdf_attachment.content_type, 
    :file_name => pdf_attachment.filename, 
    :disposition => 'inline' 
end 

в routes.rb:

map.send_pdf_attachment '/pdf_attachments/send_pdf_attachment/:id', 
    :controller => 'pdf_attachments', 
    :action => 'send_pdf_attachment' 

и в представлении:

<%= send_pdf_attachment_path @model.pdf_attachment %> 
or 
<%= image_tag(send_pdf_attachment_path @model.pdf_attachment) %> 

И это не отображает файл на Mac (я не пробовал на Windows), он отображает путь:

pdf_attachments/send_pdf_attachment/35 

Что мне делать, чтобы правильно отображать PDF-файл инлайн?

ответ

1

Мое предположение, что оно не отображается, потому что вы пытаетесь отобразить PDF в теге изображения. Это не изображение, это pdf.
Либо отобразите его в iframe, либо поместите его в ссылку, которая отображает только pdf, используя файл send_file и расположение inline.

Я создаю pdf-файлы с помощью королевского плагина, и они отображают встроенный метод.

+0

Привет, Хронос, спасибо за подсказку. Допустим, я не знал о