头像不显示
Gravatar image not displaying
我正在学习 Michael Hartl 在 Rails 上的 Ruby 教程,我添加了代码来显示用户的 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>
这是我检查元素时的代码
<img alt="humber" class="gravatar" src="https://secure.gravatar.com/avatar/8e92292186fbb306e253b08d0f3eb993">
humber
电子邮件是否正确提取?我有一个方法做类似的事情,默认 url 作为参数(以防用户电子邮件未在 gravatar 中注册。检查它是否可以帮助您:
def avatar
default_url = "http://pcdoctorti.com.br/wp-content/plugins/all-in-one-seo-pack/images/default-user-image.png"
gravatar_id = Digest::MD5::hexdigest(self.email).downcase
"http://gravatar.com/avatar/#{gravatar_id}.png?d=#{CGI.escape(default_url)}"
end
Ps: 这是用户模型中的一个实例方法
您的代码是正确的,也许您使用的用户没有电子邮件,或者电子邮件在 gravatar 中没有图像。我建议您验证用户是否有电子邮件
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
嗯....我尝试添加一个图像标签并向其添加哈希以查看它是否呈现(请删除它并在它起作用后使用 gravatar_for)。它做到了,所以这里是我为改进 gravatar_for 方法所做的步骤。希望对您有所帮助。
- 将头像来源从https://改为http://
- 在 gravatar_for 方法中添加更多 class 到 gravatar。它应该读作
image_tag(gravatar_url, 替代: user.name, class: "gravatar img img-responsive")
可能您完成了教程中的一项练习并编写了自定义 class 来隐藏图像
img {
display: none;
}
我遇到了同样的问题,并尝试了到目前为止给出的所有解决方案(好吧,无论如何是前三个),但让我摸不着头脑。然后我从 URL 中删除了 'secure',如果工作得很好——或者至少对于与 gravatar 无关的 link。我的意思是,我期待显示默认的 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') %>
我解决了!
教程指导你使用curl下载镜像;但这可能会导致文件损坏。为什么?本书编写时,网站上的文件是“.png”,而现在是“.svg”。名称也从 rails.png 更改为 rails-logo.svg。
按照指南,您下载了一个空白文件并将其另存为 .png,然后 rails 给您竖中指。
我目前(2018 年 2 月)正在使用 Rails 教程 (Rails 5) 书中 Ruby 的在线版本学习这门课程。我发现错误是遗留代码:
/sample_app/app/assets/stylesheets/custom.scss
/* hide all images */
img {
display: none;
}
删除它可以让我的头像图片正确显示
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) 并且图像出现损坏。后者对我来说很好用。
在您的 custom.scss 文件中注释掉或删除以下行:
img {
display: none;
}
我正在学习 Michael Hartl 在 Rails 上的 Ruby 教程,我添加了代码来显示用户的 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>
这是我检查元素时的代码
<img alt="humber" class="gravatar" src="https://secure.gravatar.com/avatar/8e92292186fbb306e253b08d0f3eb993">
humber
电子邮件是否正确提取?我有一个方法做类似的事情,默认 url 作为参数(以防用户电子邮件未在 gravatar 中注册。检查它是否可以帮助您:
def avatar
default_url = "http://pcdoctorti.com.br/wp-content/plugins/all-in-one-seo-pack/images/default-user-image.png"
gravatar_id = Digest::MD5::hexdigest(self.email).downcase
"http://gravatar.com/avatar/#{gravatar_id}.png?d=#{CGI.escape(default_url)}"
end
Ps: 这是用户模型中的一个实例方法
您的代码是正确的,也许您使用的用户没有电子邮件,或者电子邮件在 gravatar 中没有图像。我建议您验证用户是否有电子邮件
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
嗯....我尝试添加一个图像标签并向其添加哈希以查看它是否呈现(请删除它并在它起作用后使用 gravatar_for)。它做到了,所以这里是我为改进 gravatar_for 方法所做的步骤。希望对您有所帮助。
- 将头像来源从https://改为http://
- 在 gravatar_for 方法中添加更多 class 到 gravatar。它应该读作 image_tag(gravatar_url, 替代: user.name, class: "gravatar img img-responsive")
可能您完成了教程中的一项练习并编写了自定义 class 来隐藏图像
img {
display: none;
}
我遇到了同样的问题,并尝试了到目前为止给出的所有解决方案(好吧,无论如何是前三个),但让我摸不着头脑。然后我从 URL 中删除了 'secure',如果工作得很好——或者至少对于与 gravatar 无关的 link。我的意思是,我期待显示默认的 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') %>
我解决了!
教程指导你使用curl下载镜像;但这可能会导致文件损坏。为什么?本书编写时,网站上的文件是“.png”,而现在是“.svg”。名称也从 rails.png 更改为 rails-logo.svg。
按照指南,您下载了一个空白文件并将其另存为 .png,然后 rails 给您竖中指。
我目前(2018 年 2 月)正在使用 Rails 教程 (Rails 5) 书中 Ruby 的在线版本学习这门课程。我发现错误是遗留代码:
/sample_app/app/assets/stylesheets/custom.scss
/* hide all images */
img {
display: none;
}
删除它可以让我的头像图片正确显示
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) 并且图像出现损坏。后者对我来说很好用。
在您的 custom.scss 文件中注释掉或删除以下行:
img {
display: none;
}