TumblrRailsで生成するViewの中に作成したJavaScriptでJSONデータを処理する事に結構はまりました。理解してみると何とも単純なことではまっていたと言うことがわかるのですが、初めてのことなのでずいぶん時間がかかりました。そもそも事の発端は、JavaScriptで作成されたライブラリィでグラフを表示したいと言うことが目的でした。サンプルソースでは問題なく動くけれども、Railsアプリではグラフが表示できない...。試行錯誤した結果問題となっていたのは以下のことでした。JavaScriptが動作するイベントが発火しないともちろん動作しない。RailsのViewではテンプレート変数でJSONデータを受け渡しできるけれども、このときJavaScriptでevalする必要はない。RubyのHash#to_jsonで生成した文字列をそのまま渡すと動作しない。それぞれきわめて単純なことですが、なにぶん初めてのことなのですべてが複合的に絡み合っていて解きほぐすのに時間がかかりました。1.JavaScriptが動作するイベントが発火しないともちろん動作しない。これはサンプルソースなどではもちろんさらっと書いてあるのですが、自分で動作させるときには忘れてしまってそもそもJavaScriptが動作していない事に気づかず明後日の方向へ進んでしまうことがありそうです。今回は単純にbodyタグでonloadイベントをコールするようにしました。[/sourcecode]2.RailsのViewではテンプレート変数でJSONデータを受け渡しできるけれども、このときJavaScriptでevalする必要はない。evalメソッドをコールしていましたが、テンプレート変数を使用する場合は必要ないようです。Ajaxでコントローラーから適宜JSONデータを受信する場合は異なるのかもしれませんが、今のところちょっとわかりません。3.RubyのArray#to_jsonで生成した文字列をそのまま渡すと動作しない。これが一番はまりました。データをハッシュとして作成後、それぞれをArrayに詰めてto_jsonメソッドでJSONデータを作成しました。ところが、一見正しく見えるそれらの文字列が実は正しくないと言うことに気づくまでに時間がかかりました。具体的には、下記のJSONデータは正しくなくJavaScriptでは処理が行われません。[/sourcecode]一方こちらの場合は処理が行われます。[/sourcecode]この違いに気づくのにいろいろと試行錯誤しました。何が違うかというと、ブラウザでソース表示を行った際に見える内容で、上の例ではダブルクオートがエスケープされていません。下の例ではダブルクオートはエスケープされています。サニタイズされてしまっていました。メソッドを利用することも必須です。)またコントローラーの処理も以下のように変更する必要がありました。[/sourcecode]このようにすることでJSONデータをJavaScriptで読み込ませることができるようになりました。»スポンサープロフィール合同会社ビーグルソフトのブログです。設立日は2013年8月21日の会社です。までご連絡をお願い致します。SDKのバージョンを指定するphonelibを利用して電話番号を上手に扱うJavaScriptを利用してPDFに設定するフォントが文字化けするValidationAttributreでDIされたオブジェクトを取得するPostgresでUUIDを生成する注目記事スターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。