我正在使用Michael Hartl的Ruby on Rails教程,并且我添加了代码来显示用户的Gravatar图像。但它没有显示出来。
这是我的用户帮助
module UsersHelper
# Returns the Gravatar (http://gravatar.com/) for the given user.
def gravatar_for(user)
gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
image_tag(gravatar_url, alt: user.name, class: "gravatar")
end
end
这是我的show.html.erb
<% provide(:title, @user.name) %>
<div class="row">
<aside class="col-md-4">
<section class="user_info">
<h1>
<%= gravatar_for @user %>
<%= @user.name %>
</h1>
</section>
</aside>
</div>
&#13;
这是我检查元素时的代码
<img alt="humber" class="gravatar" src="https://secure.gravatar.com/avatar/8e92292186fbb306e253b08d0f3eb993">
humber
答案 0 :(得分:8)
可能你在教程中做了一个练习并写了自定义类来隐藏图像
img {
display: none;
}
答案 1 :(得分:1)
嗯....我尝试添加一个图片标记并添加哈希值以查看它是否呈现(请删除它并在使用后使用gravatar_for)。它确实如此,所以这里是我改进gravatar_for方法的步骤。我希望它有所帮助。
答案 2 :(得分:1)
我已经解决了!
本教程指导您使用curl下载图像;但这可能会导致文件损坏。为什么?写这本书时,网站上的文件是'.png',今天它是'.svg'。该名称也已从rails.png更改为rails-logo.svg。
按照指南,您下载一个空白文件并将其另存为.png,然后rails会给您中指。
答案 3 :(得分:0)
电子邮件是否正确提取?我有一个类似的方法,使用默认URL作为参数(如果用户电子邮件未在gravatar中注册。请检查它是否可以帮助您:
= link_to 'New Issue',
{ :controller => "issues", action: 'new'},
class: 'btn btnsuccess right'
Ps:这是用户模型中的实例方法
答案 4 :(得分:0)
您的代码是正确的,也许您使用的用户没有电子邮件,或者电子邮件中没有图片。我建议您验证用户是否有电子邮件
def gravatar_for(user)
if user.email?
gravatar_id = Digest::MD5::hexdigest(user.email.downcase)
gravatar_url = "https://secure.gravatar.com/avatar/#{gravatar_id}"
image_tag(gravatar_url, alt: user.name, class: "gravatar")
else
image_tag("/img/avatar_default.png", alt: user.name, class: "gravatar")
end
end
答案 5 :(得分:0)
我遇到了同样的问题,并且尝试了迄今为止给出的所有解决方案(好吧,前三个)但是却一直在挠头。然后我删除了&#39; secure&#39;来自URL,如果工作得很好 - 或者至少对于与gravatar无关的链接。我的意思是,我期待显示默认的gravatar图像,它确实显示了!
(我也关注Michael Hartl的课程。)
<% hex_digest = Digest::MD5::hexdigest('my_name@gmail.com') %>
<% gravatar_url = "https://gravatar.com/avatar/#{hex_digest}" %>
<%= image_tag(gravatar_url, alt: 'gravatar image') %>
答案 6 :(得分:0)
As of 2018 Michael的辅助函数gravatar_for
的URL变量定义为:
gravatar_url = "https://secure.gravatar.com/gravatar/#{gravatar_id}"
但是Gravatar's documentation指导您使用:
gravatar_url = "https://www.gravatar.com/avatar/#{gravatar_id}"
前者对我不起作用,我得到(404)并且图像似乎已损坏。后者对我来说很好。
答案 7 :(得分:0)
在您的custom.scss文件中注释掉或删除以下行:
img {
display: none;
}