1

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

如果我输入类似 facebook_shares(" http://www.google.com ") 之类的代码,则代码有效 如果我使用 facebook_shares("#{request.protocol}#{request.host_with_port}#{request.完整路径}”)

不知道如何解决这个问题

这是我当前的代码...

助手.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) %>

超级输...

4

2 回答 2

0

我想到了。这是我自己一个可怕的疏忽:p。

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

推动这一点并在生产中运行该功能可以正常工作。对不起大家,但感谢您的帮助!

于 2013-07-23T00:03:56.787 回答
0

data[url]['shares']部分可疑。Eitheredata[url]为您提供了 Array,当您尝试['shares']使用该 Array 时,您会遇到错误,这很明显。或者data本身是某种东西的数组......因此data[url]引发错误。因此,首先检查数据的外观。出现此错误是因为Array#[]don't allow string inside []。请看下面的演示代码:

arr = [1,2]
arr['foo']
# ~> -:2:in `[]': no implicit conversion of String into Integer (TypeError)
# ~>  from -:2:in `<main>'
于 2013-07-17T20:54:54.113 回答