【问题标题】:Gsub on a Fixnum? undefined method `gsub' for 55:FixnumGsub 在 Fixnum 上? 55:Fixnum 的未定义方法“gsub”
【发布时间】:2014-01-12 20:00:17
【问题描述】:

通过以下函数,我进入一个站点,爬取一些信息,返回一些 JSON,并将其放入 @price 实例变量中。

返回给我的JSON是一个数字,但是如果这个数字大于1000,那么这个数字会包含一个逗号,所以我gsub出来了。

  def iteminfo(id)
    url = "http://services.runescape.com/m=itemdb_rs/api/catalogue/detail.json?item=#{id}"
    page = Nokogiri::HTML(open(url))
    info = JSON.parse(page.text)
    namefinder =  info['item']['name']
    pricefinder = info['item']['current']['price']
    name = namefinder
    @price = pricefinder.gsub(',', '').to_i
  end

我已经试过了:

if pricefinder.to_i > 1000
  @price = pricefinder.gsub(',', '').to_i
else
  @price = pricefinder.to_i
end

这消除了错误,但搞砸了在 @price 上执行的数学运算我该如何解决这个问题?

【问题讨论】:

    标签: ruby-on-rails ruby json gsub


    【解决方案1】:

    看来您需要接受一个数字或一个字符串。有很多方法可以处理它,但其中一种是:

    @price = pricefinder.to_s.gsub(',', '').to_i
    

    【讨论】:

    • 谢谢!我想这几分钟从来没有来过:P
    【解决方案2】:

    错误表明您正在尝试在 Fixnum 类型的对象上调用方法 gsub(这告诉我您正在同时处理字符串和数字)。

    这样的事情可能会奏效:

    pricefinder.to_s.gsub(',', '').to_i
    

    【讨论】:

      猜你喜欢
      • 2014-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 2014-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多