我在localhost:3000上的开发环境
我在Gravatar上关注了railscasts剧集。我正在尝试设置位于资产/图片中的自定义头像图片。
我使用的代码是:
def avatar_url(user)
gravatar_id = Digest::MD5.hexdigest(user.email.downcase)
default_url = "#{root_url}assets/AwesomeAvatar.png"
"http://gravatar.com/avatar/#{gravatar_id}.png?s=100&r=g&d=#{CGI.escape(default_url)}"
end
头像does not load。当我尝试保存图像时出现错误:“失败 - 没有文件”。
我将default_url更改为:
default_url = "http://localhost:3000/assets/AwesomeAvatar.png"
当我去这个网址时,我看到了头像的图像,但我仍然得到相同的错误,并且头像没有加载。我也尝试将d设置为:
d="http://localhost:3000/assets/AwesomeAvatar.png"
和d=#{CGI.escape("http://localhost:3000/assets/AwesomeAvatar.png")}
,但也无法加载头像。
有什么线索错了吗?
由于
答案 0 :(得分:3)
Gravatar的网站说你指定的默认图像"必须是公开的(例如,不能在内联网上,在本地开发机器上,在HTTP Auth后面或其他防火墙等)。默认图像通过安全扫描以避免恶意内容。"
您用于默认映像的url托管在localhost上的开发环境中,因此将失败。要使其工作,您需要在某个公共位置托管默认图像,并使用该公共URL作为默认值。
答案 1 :(得分:0)
看起来您的网址有误,请尝试:
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
作为参考,这是我的用户帮助:
module UsersHelper
# Returns the Gravatar (http://gravatar.com/) for the given user.
def gravatar_for(user, options = { size: 50 })
gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
size = options[:size]
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
image_tag(gravatar_url, alt: user.name, class: "gravatar")
end
end
您可以添加选项[:default] = image_tag(“Yourimage.png”)来更改默认图片。
答案 2 :(得分:0)
我应该评论你的问题,但我的声誉不允许我。 你试试“gravatar_url =”https://secure.gravatar.com/avatar/# {gravatar_id}“???