ruby-on-rails - 在 Rails 模型中调用 gravatar_for

标签 ruby-on-rails ruby gravatar

我正在尝试从我的一个模型中调用 gravatar_for。 (是的,我意识到这不是严格意义上的 MVC,但我有这样做的正当理由,我不会讨论)。我试图包括 Gravatar 的助手,但我没有成功找到它们是什么。

到目前为止,像这样将它包含在我的类(class)中是行不通的:

class AnnotationPostedActivity < NewsfeedActivity
  include GravatarHelper::PublicMethods

最佳答案

假设您使用的是 gravatar-plugin要生成图像标签,有几个问题需要克服。请注意,gravatar_for 方法将用户对象作为其第一个参数。

GravatarHelper::PublicMethods 混合到您的 AnnotationPostedActivity 类中,使所有实例都可以访问方法 gravatar_for(user, options={}) .所以你会说:

alice = User.new()

alice.respond_to?(:gravatar_for)
=> true

alice.gravatar_for
ArgumentError: wrong number of arguments (0 for 1)
# (you need to supply an argument - the method got zero but was expecting one)

alice.gravatar_for(alice)
=> "<img class=\"gravatar\" alt=\"\" width=\"50\" height=\"50\" src=\"http://www.gravatar.com/avatar/70375a32ad79987b9bc00cb20f7d1c95?rating=PG&amp;size=50\" />
 # (not what we want at all)

您知道,您必须提供 user 对象作为 gravatar_for 方法的第一个参数。所以你要做的是

1。使用另一个 gem

它提供了一个查看 self.email 而不是将其作为方法参数的模块。

2。自己实现方法

It's easy .还有 already ruby code跟随。您可能需要在您的AnnotationPostedActivity 模型

中包含一些 Rails 的助手
>> gravatar_url 'github@deanandadie.net`
NoMethodError: undefined method `h' for main:Object ....

>> require 'active_support/core_ext/string/output_safety'
=> true

>> include ERB::Util
=> Object

>> gravatar_url 'github@deanandadie.net`
=> "http://www.gravatar.com/avatar/fbaf55d6c2618cafe0a759cfe85967e0?rating=PG&size=50"

关于ruby-on-rails - 在 Rails 模型中调用 gravatar_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11445115/

相关文章:

javascript - 如何根据选中的复选框数量设置 Stripe 按钮的收费金额

ruby-on-rails - 通过用户注册进行主动管理和设计

Ruby 实例变量访问

ruby 数组交集性能问题

resolution - 图像分辨率最高

ruby-on-rails - 如何有条件地添加索引

ruby-on-rails - 通过更改 html( Bootstrap 轮播)来 Rails 每种方法

ruby-on-rails - 如何根据其他属性值添加自定义验证消息?

registration - 在 gravatar 中更改图片 — 带有所需电子邮件的 url

django - Unicode 对象必须在散列之前编码