我在Ruby上做了以下代码:
由于代码经过测试并且工作正常,现在我想在Rails应用程序中使用它。当下载自动开始时,我将代码放入“下载”控制器(homepage.com/download)中,在控制器中添加此部分:
send_file file, :filename => my_pdf.pdf, :type => "application/pdf", :disposition => "attachment"
希望当用户点击链接“homepage.com/download”时,文件将被下载,但没有任何反应。
完整代码下方:
begin
agent = Mechanize.new
agent.pluggable_parser.pdf = Mechanize::File
page = agent.get("http://www.example.com")
#login
form = page.form_with(:id => 'form-login-page')
form.login = "my_mail"
form.password = "my_password"
page = form.submit
# parse the link
agent.get("http://www.example.com/").parser.xpath('//div/a').each do |link|
# download the file
File.open("/my_pdf.pdf", 'w+b') do |file|
file << page.body.strip
# the new part that I added on rails
send_file file, :filename => my_pdf.pdf, :type => "application/pdf", :disposition => "attachment"
end
end
代码有什么问题? 我是否必须在查看中添加内容?在我的路线?
顺便说一句,我不确定这一部分:
File.open(“ /my_pdf.pdf ”,“w + b”)do | file |
在Rails应用程序中是正确的,因为在Ruby上,文件保存在应用程序的Public文件夹中,不确定它在ROR 3上的工作方式是否相同
答案 0 :(得分:0)
如有需要,我找到答案:
如果文件保存在公共文件夹中,只需替换我代码的最后一部分
send_file file, :filename => my_pdf.pdf, :type => "application/pdf", :disposition => "attachment"
这一个
Rails.root.join('public', 'my_pdf.pdf')
该文件将被下载