2015-11-23 2 views
0

Я использую prawn-rails.prawn rails скачать бесплатно на открытом воздухе

У меня есть вид show.pdf.prawn.

Я бы хотел (-ась), чтобы скачать этот pdf-файл.

Я попытался следующие:

def download 
     send_data(
     show, 
     filename: "#{custom_name}.pdf", 
     type: 'application/pdf' 
    ) 
    end 

Что она делает, это загрузить что-то называется #{custom_name}.pdf но я м не смог открыть его (falied to load PDF document).

После того он изменился

def download 
     send_file(
     show, 
     filename: "#{custom_name}.pdf", 
     type: 'application/pdf' 
    ) 
    end 

Я получаю

no implicit conversion of true into String 

Пожалуйста совет.

+0

Как вы определяете custom_name ??? – rlarcombe

+0

Я смогу проверить ваше решение завтра - я уже закончил работу сегодня :) –

+0

Мое решение было предположено ... исходя из того факта, что драгоценный камень с креветками дает вам обработчик вида, поэтому вам не нужно вызывать send_data или send_file. Просто визуализируйте представление и настройте Content-Disposition. ... Мне будет интересно узнать, работает ли это! – rlarcombe

ответ

1

Должен работать:

send_data render_to_string("show"), filename: "#{custom_name}.pdf", 
            type: 'application/pdf' 

Также вы можете использовать prawnto_2 библиотека:

gem "prawnto_2", require: "prawnto" 

, а затем просто сделать в действии контроллера:

def show 
    respond_to do |format| 
    format.pdf { 
     prawnto inline: false, 
       filename: "#{custom_name}.pdf", 
       prawn: {} # prawn settings here 
    } 
    end 
end 

Но я не уверен, как эта библиотека в настоящее время поддерживается, однако все еще работает с Rails 4.2.x.

+0

это просто сработало :) спасибо! –

0

Как насчет:

def download 
    response.headers['Content-Disposition'] = 'attachment; filename="' + custom_name + '.pdf"' 
    render :show, mime_type: Mime::Type["application/pdf"] 
end 
+0

эй, у меня есть 'undefined method' [] 'для Mime :: Type: Class', используя предлагаемое решение. Большое спасибо за ваш вклад, я очень ценю это! –

+0

Вы пробовали это без my_type -> просто сделать: show ??? Если вы используете .pdf в запросе, вам, вероятно, это не понадобится. Дайте мне знать, и я обновлю свой ответ – rlarcombe

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