2011-05-11 5 views
25

私のコントローラから私のビューにJSONを取得しようとしています。私が試してみました私の見解では奇妙なJSON RailsでのJavascriptの問題

@nodes = Node.all 
@json = @nodes.as_json(:only => [:ID, :Lat, :Lon]) 

を::

1) var stuff = <%= @json %> 
2) var stuff = <%= @json.to_json %> 
3) var stuff = <%= @json.to_json.to_json %> 

をし、それらのすべては私にエラーを与える私のコントローラでは、私がやっています。私は通常取得する"Unexpected Syntax Error &" or "Unexpected Syntax Error {"

私はまた、jqueryを使用して、コントローラ内でrespond_toを使ってみましたが、どちらも動作していないようです。

私の考えは、ビューにJSONを取得することは大きな問題ではありませんとjQueryを必要とすべきではないということであり、現在、私のページのソースは次のようになります。私は& QUOT記号を理解しない

var stuff = [{&quot;node&quot;:{&quot;ID&quot;:1301499692582,&quot;Lat&quot;:42.3605063113369,&quot;Lon&quot;:-71.0870862191138}},{&quot;node&quot;:{&quot;ID&quot;:1301499691515,&quot;Lat&quot;:42.3605147089149,&quot;Lon&quot;:-71.0870533282532}},{&quot;node&quot;:{&quot;ID&quot;:1301431075499,&quot;Lat&quot;:42.3605456103,&quot;Lon&quot;:-71.0875239075536}} etc 

[{"node":{"ID":1301499692582,"Lat":42.3605063113369,"Lon":-71.0870862191138}},{"node":{"ID":1301499691515,"Lat":42.3605147089149,"Lon":-71.0870533282532}},{"node":{"ID":1301431075499,"Lat":42.3605456103,"Lon":-71.0875239075536}} 

注:私もvar stuff = '<%= @json.to_json%をやってみました>が、私json => @nodes.to_jsonを、ページが有効である通常のJSONをレンダリングする:しかし、私は、レンダリングを行うとき(多分構文エラーがどこから来ているのthats) do var json = JSON.parse(stuff)、それは私に不正なトークンエラーを与えます。

誰か助けてもらえますか?本当にありがとう!

答えて

48

デフォルトはあなたがhtml_safeとしてあなたのJSONをマークする必要があるのRails 3に

であるように、これはRailsのHTMLコードするあなたの文字列です:as_jsonはハッシュの代わりを与えるので.to_sが必要であること

var stuff = <%= @json.to_s.html_safe %> 

注文字列。代わりにこれを行うことができます:

# in controller 
@json = @nodes.to_json(:only => [:ID, :Lat, :Lon]) 

#and in view 
var stuff = <%= @json.html_safe %> 
+0

ありがとうございます!今はそれが源泉にあると考えられています。あなたが気にしない場合は、私がJSONの各オブジェクトにどのようにアクセスできるかの例を教えてください。私は本当にそれを感謝します! – readmymsg123

+0

Nevermind。わかった。本当にありがとう!!! – readmymsg123

+0

ニース!申し訳ありませんが、私は早く応答することができませんでした。 – Laas

0

私はあなたの周りに引用符を入れて、JSONに文字列を解析するようjqueryに依頼する必要があると思います。