使用以下功能,我转到某个站点,抓取一些信息,返回一些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
上执行的数学运算如何解决这个问题?
答案 0 :(得分:5)
您似乎需要适应 数字或字符串。有很多方法可以处理它,但其中一种方法是:
@price = pricefinder.to_s.gsub(',', '').to_i
答案 1 :(得分:2)
错误表明您正在尝试在gsub
类型的对象上调用方法Fixnum
(这告诉我您正在处理字符串和数字同时处理)。
这样的事可能有用:
pricefinder.to_s.gsub(',', '').to_i