我有以下内容:
def self.parse_categories
categories = @data.css('#refinements ul').first
if categories.css('li:nth-child(1) a span').text == "Pet Supplies"
@categories_hash = {}
categories_category = categories.css('li:nth-child(2) strong').text
categories.css('li').drop(2).each do | categories |
categories_title = categories.css('.refinementLink').text
categories_count = categories.css('.narrowValue').text[/[\d,]+/].delete(",").to_i
@categories_hash[:categories] ||= {}
@categories_hash[:categories][categories_category] ||= {}
@categories_hash[:categories][categories_category][categories_title] = categories_count
end
else
@categories_hash = {}
end
return @categories_hash
end
现在代码在包含元素的页面中运行良好:#refinements ul
但代码在没有的页面中断。我怎么能这样做,以便在没有#refinements ul
时没有任何反应?就像忽略代码而不抛出错误或只是跳到else
?
答案 0 :(得分:1)
像这样,例如
def self.parse_categories
categories = @data.css('#refinements ul').first
return unless categories
# carry on
end
答案 1 :(得分:1)
问题是@data.css('#refinements ul')
为nil
时。对?
因此,尝试将其转换为数组并首先进行。
categories = @data.css('#refinements ul').to_a.first