【问题标题】:Good RoR Gravatar gem/plugin and detect if the gravatar account exists or not良好的 RoR Gravatar gem/plugin 并检测 gravatar 帐户是否存在
【发布时间】:2011-07-09 03:32:49
【问题描述】:

我目前正在使用 mdeering 的 gravatar_image_tag 插件为用户获取 gravatar 图像,但我的困境是尝试在代码中检测用户是否有 gravatar:

如果他这样做了,则显示 gravatar 图像。 如果没有,则在我的服务器上显示一个本地默认图像文件。

如果其他插件提供此功能,我愿意使用它们。

请提供代码示例。他们帮助我学得最好。

谢谢!

【问题讨论】:

    标签: ruby-on-rails gravatar


    【解决方案1】:

    您不需要宝石/插件。这个screencast 一步一步地解释了你需要什么。归结为使用以下辅助方法:

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

    【讨论】:

      【解决方案2】:

      这是一个检查用户是否已经拥有 gravatar 图像的辅助方法:

      诀窍是获取带有错误默认图像的 gravatar 图像,然后检查标题响应。 它是通过 Net::HTTP ruby​​ 库实现的。

      def gravatar?(user)
              gravatar_check = "http://gravatar.com/avatar/#{Digest::MD5.hexdigest(user.gravatar_email.downcase)}.png?d=404"
              uri = URI.parse(gravatar_check)
              http = Net::HTTP.new(uri.host, uri.port)
              request = Net::HTTP::Get.new(uri.request_uri)
              response = http.request(request)
              if (response.code.to_i == 404)
                  return false
              else
                  return true
              end 
          end
      

      【讨论】:

        【解决方案3】:

        Gravtastic gem 应该来拯救你。它相当简单——你可以仔细阅读它的自述文件。 Gem 的 github link

        【讨论】:

          【解决方案4】:

          看起来我参加聚会的时间已经很晚了,但 gravatar_image_tag gems 确实有你需要的选项来轻松完成这项工作。

          您可以像这样在您的应用程序中configure your default image globally

          # config/initializers/gravatar_image_tag.rb
          GravatarImageTag.configure do |config|   
            # Set this to use your own default gravatar image rather then serving up Gravatar's default image [ 'http://example.com/images/default_gravitar.jpg', :identicon, :monsterid, :wavatar, 404 ].
            config.default_image  = nil
          end
          

          或者像这样在one off basis 上:

          gravatar_image_tag('junk', alt: 'Github Default Gravatar', gravatar: { default: 'https://assets.github.com/images/gravatars/gravatar-140.png' })
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-06-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多