Rails -nokogiri GEM:在网址

时间:2015-09-08 11:34:42

标签: html ruby-on-rails ruby mime

我正在使用gem nokogiri来废弃img代码src值。 有段时间某些时间url没有显示带扩展名的图片文件名。

所以我试图检测图像MIME类型。

为此我试过

MIME::Types.type_for("http://web.com/img/12457634").first.content_type # => "image/gif"

并显示错误:

undefined method `content_type' for nil:NilClass (NoMethodError)

任何解决方案?

1 个答案:

答案 0 :(得分:3)

您收到此错误:

undefined method `content_type' for nil:NilClass (NoMethodError)

因为MIME::Types.type_for("http://web.com/img/12457634").first对象有时是nil

要避免此问题,请执行以下操作:

MIME::Types.type_for("http://web.com/img/12457634").first.try(:content_type)

因此,如果程序为nil,则不会导致程序崩溃。如果不是nil,则会得到正确的content_type

或者,要使用Content-Type检查图像的Net::HTTP标题,您可以编写如下方法:

def valid_image_exists?(url)
    url = URI.parse(url)
    Net::HTTP.start(url.host, url.port) do |http|
      return http.head(url.request_uri)['Content-Type'].start_with? 'image'
    end
end