1

试图让rails中的控制器块工作。响应 url 时,我想显示与模型关联的 .png 文件。

respond_to do |format|
format.html  { render :blank }
format.json { render json: @play }
format.png  do  
send_data data, :type => "image/png", :filename => 'screenshot.png'
end

数据工作正常,是一个 200Kb 的文件。问题是当我转到网址时:

http://localhost:8080/plays/testing1.png

它把我带到了一个空白页面(我创建了 show.png.erb 并且里面什么都没有)。不知道如何让 png 文件显示为内联或可下载。

谢谢你的帮助

4

2 回答 2

0

尝试使用 Conent-Disposition,您可以将其设置为附件或内联。

于 2012-09-22T23:25:18.257 回答
0

老问题,但我已经在同一个问题上苦苦挣扎了几个小时,所以万一有人在未来发现这个问题:

我也遇到了同样的问题,在 Chrome 中生成的文档带有损坏的图像和标签,即<img style="-webkit-user-select: none" src="http://localhost:3000/open/28">. 同样在 Firefox 中,我收到一条错误消息,指出图像存在问题。

解决方案:我更改send_datasend_filewhich 给了我以下代码:

respond_to do |format|
  format.png {  send_file img ,type: "image/png", disposition: 'inline' }
end

有关 send_file 的更多信息在这里

之后,路由通过提供没有损坏图像标签的 PNG 图像来响应。

希望能帮助别人。

于 2016-03-08T15:18:58.720 回答