我做到了这一点:
<% response.headers['Content-Disposition'] = "attachment;
filename=somefile.txt" -%>
I am a text file!
我想强制下载我的公共文件夹中的文件而不显示路径,所以我有一个控制器而不是检查一些参数来知道我的文件的位置(在我的公共文件夹中)然后我我想强行下载:
<% response.headers['Content-Disposition'] = "attachment;
filename=#{@invoice.file_name}" %>
How do I get the file content to be here rather than this text?
有办法吗?
答案 0 :(得分:5)
我认为send_file会做你想要的。
send_file '/path/to.file', :type => 'text/plain', :disposition => 'inline'
答案 1 :(得分:3)
定义标题不是视图的工作。在控制器中执行它会更清晰。 实际上,您不需要任何html视图来呈现那种文件。
做这样的事情会更合适:
def action
response.headers['Content-Disposition'] = 'attachment; filename=somefile.txt'
return render(:text => File.read('/path/to/your/file.txt')
end
你保持你的东西干净(你的视图中没有工作代码)并适当强制下载你的文件。