在没有帮助和更多研究之后,我找到了该怎么做。
使用我的 image_url http://some.domain.com/images/uploaded/users/avatar/:user_id/:file_name
您首先需要创建一个GridfsController,然后创建发送数据的方法:
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
然后在initializers/carrierwave.rb 中配置grid_fs_access_url(您可能需要创建文件)
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 方法来满足您的需求。