2017-01-28 5 views
0

私はRailsを初めて使っているので、データベースからブロブの内容を表示するのに十分な時間があります。ペーパークリップや宝石を使わずにデータベースに保存されたブロブの内容を表示する方法は?

私は既にこの試みた:

#controller: 
def show_image 
    @user = User.find(params[:id]) 
    send_data @user.image, :type => 'image/png',:disposition => 'inline' 
end 
#views: 
<%= image_tag url_for(:controller => "mycontroller", :action => "show_image", :id => @user.id) %> 

をこれが出力されます。

enter image description here

私は何をすべき?

+0

railsコンソールで、 'User.find(1).image'を実行するとどうなりますか? – lorefnon

+0

ここでは正確に何をしようとしていますか?イメージを表示しますか?あなたのコントローラに 'send_data'を置くことは、ユーザがリンクをクリックして*画像をダウンロードすることを可能にするでしょう。バイナリデータを送信し、 'image_tag'では動作しません。 – sixty4bit

+0

ええ、画像を表示する。 –

答えて

0

image_tagヘルパーを使用して画像を表示する方法の詳細については、this documentationを参照してください。

あなたの場合は、usersテーブル(特定のユーザーに関連付けられている画像)に保存されている画像の名前があるようです。あなたは、このようなimage_tagの内側に、そのユーザーの属性を呼び出す必要があります:

<%= image_tag @user.image %>

Railsはデータベースに格納されている画像の名前を見て、あなたのapp/assets/images/ディレクトリの中にそれを見つけようとしますので、イメージがそこに保存されていることを確認してください。たとえば、「butterfly.jpg」のユーザーがimageの値を持つユーザーがいる場合、Railsはファイルapp/assets/images/butterfly.jpgが存在すると見なします。

これはあなたがしなければならないことです。あなたがしたいことがあなたがそれをクリックしてダウンロードすることを可能にするリンクを作成しない限り、コントローラとsend_dataを持って来る必要はありません。

+0

私はペーパークリップを使用して、btw @ sixty4bitありがとうございました。 –

関連する問題