在Fixnum上的Gsub? undefined方法`gsub'代表55:Fixnum

时间:2014-01-12 20:00:17

标签: ruby-on-rails ruby json gsub

使用以下功能,我转到某个站点,抓取一些信息,返回一些JSON,并将其放入@price实例变量中。

返回给我的JSON是一个数字,但是如果数字大于1000,那么数字将包含一个逗号,所以我把它编出来。

  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上执行的数学运算如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

您似乎需要适应 数字或字符串。有很多方法可以处理它,但其中一种方法是:

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

答案 1 :(得分:2)

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

这样的事可能有用:

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