どのようにビュー内のプライベートフォルダから画像を表示するには?
-
21-12-2019 - |
質問
私は本当に簡単なように見える何かに簡単なヒントが必要です。私はプライベートフォルダ内にいくつかの写真を持っていて、私のビューの中にそれらを表示したいと思います。
私が見つけた唯一の解決策はこれでした:
def show
send_file 'some/image/url', :disposition => 'inline', :type => 'image/jpg', :x_sendfile => true
end
私はそれを読んだ :disposition => 'inline'
画像のダウンロードをトリガし、私は私のビューの中にそれを表示することができません。問題は、私がトリガーするたびに show
アクション、画像のダウンロードが自動的にアクティブになり、自動的にダウンロードされます。のための眺め show
アクションは表示されません。
その画像をビュー内に表示するにはどうすればよいですか?お疲れさまでした。.
解決
私はそれをする方法、そして私はそれが本のそばにそれが完璧であると言っていない、私はそれをレンダリングするために画像のrootとコントローラのアクションを作ります。
sol、routes.rb
match '/images/:image', to: "your_controller#showpic", via: "get", as: :renderpic
.
コントローラ内:
def showpic
send_file "some/path/#{params[:image]}.jpg", :disposition => 'inline',
:type => 'image/jpg', :x_sendfile => true # .jpg will pass as format
end
def show
end
.
とあなたの見解で
<img src="<%= renderpic_path(your image) %>">
.
ここに「send_file」
にパラメータが少ない例です。def showpic
photopath = "images/users/#{params[:image]}.jpg"
send_file "#{photopath}", :disposition => 'inline'
end
. 他のヒント
私は問題があると思う type
.ドキュメントから:
:type - specifies an HTTP content type
したがって、適切なHTTPコンテンツタイプは次のようになります image/jpeg
の代わりに image/jpg
, 、できるように こちらをご覧ください.で試してみてください:
:type => 'image/jpeg'
また、使用可能なすべてのタイプのコーディングを一覧表示することもできます Mime::EXTENSION_LOOKUP
railsコンソールに。
例を示します。:
コントローラー
class ImagesController < ApplicationController
def show_image
image_path = File.join(Rails.root, params[:path]) # or similar
send_file image_path, disposition: 'inline', type: 'image/jpeg', x_sendfile: true
end
end
ルート
get '/image/:path', to: 'images#show_image', as: :image
ビュー
image_tag image_path('path_to_image')
ビューに表示するimage_tagを使用する必要があるでしょう。
似た質問がここに上がった:プライベートストアフォルダ内のレール3.1でのCarrierWaveを使った画像を表示する