1

レールでコントローラーブロックを動作させようとしています。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 ファイルです。問題は、次の URL にアクセスするときです。

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_dataしました:send_file

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

send_file に関する詳細はこちら

その後、ルートは破損したイメージ タグのない PNG イメージを提供することで応答しました。

それが誰かを助けることを願っています。

于 2016-03-08T15:18:58.720 に答える