1

我不想在浏览器中显示由 index.api.rsb 文件呈现的 xml 文件,而是想下载它。对我来说,这听起来很简单,但我找不到解决方案。

我在控制器方法中尝试了以下内容:

def split
   if params[:export] == "yes"
       send_file *here comes the path to xml view*, :filename => "filename", :type => :xml
   end
   respond_to ...
end

结果是 MissingFile 异常...

提前致谢

4

2 回答 2

1

请注意,:disposition对于send_file默认为“附件”,所以这应该不是问题。

如果您有 MissingFile 异常,则表示路径不正确。send_file期望实际文件的路径,而不是需要渲染的视图。

对于您的情况,render_to_string可能是您需要的。请参阅此相关问题。它呈现视图并返回一个字符串,而不是设置响应正文。

def split
  if params[:export] == "yes"
    send_data(render_to_string path_to_view, filename: "object.xml", type: :xml)
  end
end
于 2013-08-02T15:09:53.937 回答
0

要强制它下载它,请添加:disposition => attachment到您的 send_file 方法。

来源:强制链接下载 MP3 而不是播放?

于 2013-08-02T14:51:09.983 回答