2012-03-23 9 views
0

この質問のnoob-ishの性質を許してください。json on home page load

私はホームページがマーカのある大規模なGoogleマップであり、クリックするとマーカー位置で撮った写真を含むインフォボックスを表示するプロジェクトがあります。また、photos#showアクションを使用して、ユーザーが個々の写真をphotos/show.html.erbビューで見ることができます。私は最近、各写真に "ツイート"と "FBのような"ボタンを統合しました。だから私は、視聴者が "www.photoshowisus.com/photos/34"のようなURLをクリックしたtwitterやFBから自分のサイトに入るようになる可能性がはるかに高いです。

ここで、写真とそのマーカーが別々のビューではなくホームページのマップに表示されるように、#showアクションを変更します。

photo#showアクションからホームビューをレンダリングすることは問題ではありませんが(私はそれほどノブではない)、2つの質問があります。まず、サーバーphoto#show応答はidパラメータで要求された写真の 'pages/home'とjsonの両方をどのようにレンダリングするのでしょうか?私は、ホームページをレンダリングする必要がないように、ネストされたレイアウトとしてマップを設定できると思いますが、私はまだapplication.jsコードにjsonオブジェクトを渡す何らかの方法が必要です。

次に、application.jsコードでjsonオブジェクトを "取得"するにはどうすればよいですか? .ready()のようなイベントを通してそれにアクセスする方法はありますか?注意してください、私はすでにjsonオブジェクトへのアクセス権を持っていれば、私のJavaScriptルーチンと一緒に行くのは良いです。

ありがとうございました!

答えて

1

ドキュメント対応のjQueryの.getJSON()を使用してAjaxを取得するのはどうですか?

$(function(){ 
    $.getJSON("http://yourdomain.com/path/to/json", function (data){ 
     // Do what you like with your JSON available in the data-variable 
    }); 
}); 
+0

Christopher、yep。それが私が現在ソリューションを実装している方法です。唯一の問題は、2回のサーバーラウンドトリップが必要だということです。私は最初のゴーラウンドでjsonをレンダリングできるソリューションがあることを望んでいます。 –

+0

@chuckw私は、ページがサーバーサイドで生成されたときに、サーバーにJSONを生成させて、それをページのJavaScript変数に格納させることができると思います。変数はあなたのJSファイルでアクセスできますか?または.jsファイルを.rbファイル(またはルビー拡張子)に変更し、JSONを生成してJavaScriptファイル内の変数をサーバーから送信する前に実行します。 JavaScriptファイルを読み込むときに 'type =" text/javascript "'を指定する限り、ブラウザは別のファイル拡張子を使用しても気にしません。 –

+0

JSONをjs変数に格納し、それをページに渡します。これはあなたの提案と同じです。 js変数へのアクセスは、クライアント側では問題ありません。それは少し面白い生成jsインラインで感じるが、それはトリックを行います!ありがとう。 –