Rails显示当前Facebook分享计数

时间:2013-07-17 20:48:56

标签: ruby-on-rails ruby

所以我试图在Rails应用程序中显示当前的facebook共享计数。尝试在我的Rails应用程序中抓取当前URL时,我不断收到“无法将字符串转换为文本”错误。

如果我输入类似facebook_shares(“http://www.google.com”)的代码,代码就有效 如果我使用facebook_shares代码不起作用(“#{request.protocol}#{request.host_with_port}#{request.fullpath}”)

不确定如何解决此问题

这是我目前的代码......

helper.rb:

def facebook_shares(url)
    data = Net::HTTP.get(URI.parse("http://graph.facebook.com/?ids=#{URI.escape(url)}"))
    data = JSON.parse(data)
    data[url]['shares']
end

view.html.erb:

<% current_url = "#{request.protocol}#{request.host_with_port}#{request.fullpath}" %>
<%= facebook_shares(current_url) %>

当我运行这个时,我得到一个“无法将字符串转换为整数”错误。如果我执行以下代码,它会起作用:

<% current_url = "http://www.google.com" %>
<%= facebook_shares(current_url) %>

超级失落......

2 个答案:

答案 0 :(得分:0)

data[url]['shares']部分是可疑的。 Eithere data[url]为您提供数组,当您在该数组上尝试['shares']时,您会收到错误,这很明显。或者data本身就是一些东西......因此data[url]会抛出错误。因此,首先检查数据的外观。由于Array#[]不允许[]内的字符串,因此出现此错误。请参阅以下演示代码:

arr = [1,2]
arr['foo']
# ~> -:2:in `[]': no implicit conversion of String into Integer (TypeError)
# ~>  from -:2:in `<main>'

答案 1 :(得分:0)

我明白了。这是我自己的可怕疏忽:p。

我正在开发在本地服务器上运行,所以我正在使用localhost:3000 / something。

推动此功能并在生产中运行该功能正常。对不起大家,但感谢您的帮助!