ruby-on-rails – 如何在Rails中访问模型上的当前主机和端口?
我面临以下问题:
我正在做一个Rails 4 webapp,我们正在使用paperclip进行个人资料图片.如果用户没有上传图像,我们提供默认图像(如facebook剪影占位符).因此,当回形针轻松处理默认图像时,我们在Profile模型中执行以下操作: class Profile < ActiveRecord::Base belongs_to :user has_attached_file :image,:styles => { :medium => "300x300",:thumb => "100x100" },:default_url => "assets/profiles/:style/placeholder.gif" end 最大的问题是我需要图像的完整URL而不仅仅是路径,因此我很难在该路径之前获取主机和端口.使用动作视图助手没有帮助(asset_url助手) 我在考虑为每个环境初始化一些常量或配置或环境变量.这是对的吗?还有其他建议吗? 编辑:我忘了提到这个:资源(配置文件)可能有自定义图片或默认图片.当它有自定义图像时,我们将其存储在Amazon S3中,在这种情况下,profile.image.url将返回完整的URL.在另一种情况下,当它没有自定义图片时,它有一个存储在app / assets / images中的默认图像,profile.image.url只返回路径.我希望方法image.url始终返回完整的URL. – flyer88刚刚编辑 解决方法
如果您在评论中提到的是提供API端点,那么确定控制器中的主机,端口等可能更有意义.像这样的东西:
# routes.rb get "/profile/:id" => "api#profile" # profile.rb def image_url_or_default request if image "#{request.protocol}#{request.host_with_port}#{image.url}" else "http://s3.amazon.com/my_bucket/default.jpg" end end # api_controller.rb def profile profile = Profile.find params[:id] render text:profile.image_url_or_default(request) end profile.image.url将是图像的完整URL. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |