1

そのため、Rails アプリケーションで現在の facebook 共有数を表示しようとしています。Rails アプリで現在の URL を取得しようとすると、「文字列をテキストに変換できません」というエラーが表示され続けます。

facebook_shares(" http://www.google.com ") のようなものを入れると、コードは機能します。 facebook_shares("#{request.protocol}#{request.host_with_port}#{request.フルパス}")

この問題を解決する方法がわからない

これが私の現在のコードです...

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) %>

超負けた…

4

2 に答える 2

0

data[url]['shares']部分が疑わしい。どちら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>'
于 2013-07-17T20:54:54.113 に答える