2017-05-14 7 views
0

少しご案内お願いします。 私はcarrierwaveuploader/carrierwave-mongoid経由AvatarUploaderとほとんどのデフォルトをこれを設定し、ファイルがGridfsキャリアウェーブモンゴイドImage_tag

経由細かい保存問題は、私はimage_tagを使用するときに、私は私が閲覧する画像を必要

http://some.domain.com/images/uploaded/users/avatar/:user_id/:file_nameのように見えるURLを取得することです公開しています ドキュメントは実際に何をすべきかを教えてくれません。

image_tagのHTTP経由でこのファイルにアクセスできません。私は得るNo route matches [GET] "/images/uploads/user/avatar/... アイデア?私は搬送波で新しいです。

レール5.0.2carrierwave(0.11.2)carrierwave-mongoid(0.10.0)mongoid(6.0.2)ないヘルプ後

答えて

0

とより多くの研究私は何をすべきかを見出した。 データを送信するための方法を作成、その後GridfsControllerを作成するために、あなたはhttp://some.domain.com/images/uploaded/users/avatar/:user_id/:file_name

私IMAGE_URLを使用して最初の必要性:その後(おそらくファイルを作成する必要があります)initializers/carrierwave.rbgrid_fs_access_urlを設定

def avatar 
    @user = User.find(params[:id]) 
    content = @user.avatar.read 
    if stale?(etag: content, public: true) 
     send_data content, type: @user.avatar.file.content_type, disposition: "inline" 
     expires_in 0, public: true 
    end 
end 

def thumb_avatar 
    @user = User.find(params[:id]) 
    content = @user.avatar.tiny_thumb.read 
    if stale?(etag: content, public: true) 
     send_data content, type: @user.avatar.tiny_thumb.file.content_type, disposition: "inline" 
     expires_in 0, public: true 
    end 
end 

CarrierWave.configure do |config| 
    config.grid_fs_access_url = "/images" 
end 

次に、ルートを作成する必要があります。

match '/images/uploads/user/avatar/:id/:filename' => 'gridfs#avatar', via: :get 
match '/images/uploads/user/avatar/:id/:filename' => 'gridfs#thumb_avatar', constraints: { filename: /thumb.*/ }, via: :get 

image_tagを使用して画像にアクセスできます。あなたのニーズに合わせて、より多くのルートとGridfsController方法を試すことができます。

関連する問題