首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代码失败,因为if语句中使用的变量为空

代码失败,因为if语句中使用的变量为空
EN

Stack Overflow用户
提问于 2013-08-22 17:39:09
回答 2查看 35关注 0票数 0

我有以下几点:

代码语言:javascript
复制
 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

EN

回答 2

Stack Overflow用户

发布于 2013-08-22 17:40:41

例如,就像这样

代码语言:javascript
复制
def self.parse_categories
  categories = @data.css('#refinements ul').first
  return unless categories

  # carry on
end
票数 1
EN

Stack Overflow用户

发布于 2013-08-22 17:56:14

问题是当@data.css('#refinements ul')nil时。对吗?所以,先试着把它转换成数组。categories = @data.css('#refinements ul').to_a.first

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18376806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档