どのようにビュー内のプライベートフォルダから画像を表示するには?

StackOverflow https://stackoverflow.com//questions/22056228

質問

私は本当に簡単なように見える何かに簡単なヒントが必要です。私はプライベートフォルダ内にいくつかの写真を持っていて、私のビューの中にそれらを表示したいと思います。

私が見つけた唯一の解決策はこれでした:

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を使った画像を表示する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top