我正在尝试从我的一个模型中调用 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&size=50\" />
# (not what we want at all)
您知道,您必须提供 user
对象作为 gravatar_for
方法的第一个参数。所以你要做的是
1。使用另一个 gem
它提供了一个查看 self.email
而不是将其作为方法参数的模块。
2。自己实现方法
It's easy .还有 already ruby code跟随。您可能需要在您的AnnotationPostedActivity
模型
>> 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/