2013-07-24 23 views
0

我想要使用我的电子邮件地址从Gravatar获取我的管理员头像。我复制了一些代码瑞安贝特的Railscast http://railscasts.com/episodes/244-gravatar没有方法错误//助手//导轨3

的应用助手:

module ApplicationHelper 
    def avatar_url(current_admin) 
    if current_admin.avatar_url.present? 
     current_admin.avatar_url 
    else 
     default_url = "#{root_url}images/guest.png" 
     gravatar_id = Digest::MD5.hexdigest(current_admin.email.downcase) 
     "http://gravatar.com/avatar/#{gravatar_id}.png?s=48&d=#{CGI.escape(default_url)}" 
    end 
    end 
end 

我的应用程序控制器具有helper :all

我的观点有<%= image_tag, avatar_url(current_admin), :class => "img-circle" %>我得到的错误是NoMethodError,更具体地说,undefined method 'avatar_url' for #<Admin:0x007fc4ae804ee8>

current_admin由devise设置。

+1

看起来管理员没有avatar_url的属性你不会将字段avatar_url添加到用户/管理模式。 –

+0

安装gravatar后,您是否已经重新启动了开发服务器? –

回答

1

我看了这个RailsCast,实际上它很差。有一次Ryan说只要在User的基础上加avatar_url而不给出任何提示,这个字段的数据应该来自哪里。

因此,不幸的是,如果使用ActiveRecord,您需要通过创建一个轨道迁移来自己添加此字段。

rails g migration AddAvatarUrlToUser avatar_url 

但是,如果您想允许用户拥有自己的非Gravatar图像,则只需要这样做。如果你想坚持gravatar的,你可以跳过“使用OmniAuth从其他站点使用图像”部分的所有内容

+0

更有意义!我试图找出为什么帮手没有加载,但它是。非常感谢! –

1

错误是告诉你的属性avatar_url不存在于你的Admin模型。

如果使用ActiveRecord,您应该添加它来创建导轨迁移。