2010-12-19 21 views
0

JavaScript配列のルビ配列を取得する必要があり、解析エラーが発生します。json、rails、javascriptの解析エラー

var characters = <%= @poop.to_json %>; 

これは、私がインラインJavaScriptにルビを埋め込む方法であり、解析エラーが発生しています。私はこのRubyの配列をjavascriptにどうやっていけばいいのですか?

私はこれを.html.erbファイルに埋め込んでいますので、rubyはjavascriptの前に変数に到達するはずです。

これが表示されているものをサファリコンソールです:

alt text

更新

私は形で私のjavascriptを置くように、それぞれ三つのフィールドのJS、CSS、およびHTMLを持っていたフォームを持っていましたそれをヘッダーに挿入します。あなたはルビーが最初になっていなかった理由は、それはすでにそこに持っていたということであったと<%をあしらったので、私はRubyのオブジェクトの出力だったJavaScriptでルビーを埋め込むた見ることができるように

<head> 
    <%= @game.javascript %> 
</head> 

=%>は別の文字列と同じです。

ああ、私はすべてあなたに助けを求めました。ありがとう!

+0

別のRubyスクリプトに入れ、適切なコンテンツタイプヘッダを送信します。 –

+0

これを解答にして、もっと詳しく説明してください:) – s84

+0

もっと長いコードサンプルを表示できますか?これがerbファイルの場合、なぜ<%= 'が解析されていないのか分かりません。 – Skilldrick

答えて

4

.erbファイルのように.jsファイルを扱っています。そうではありません。 JavaScriptファイルはRubyで解析されません。publicのものはそのまま送信されます。

JavaScriptを@poopにする1つの方法は、jsonをレンダリングするRailsアクションを作成し、それをXHRで読み込むことです。

また、<script>タグのHTMLテンプレートに@poopを出力してから、そのスクリプトタグの内容をJavaScriptから読み込むことができます。

+0

私はそれがjs.erbファイルまたはインラインJavaScriptであると仮定しています。 – mark

+0

私はそれを.html.erbに埋め込んでいます – s84

+0

@Sam - それは奇妙です - テキスト '<%= %>'がどのように解析されずにSafariに到達するのか分かりません。 – Skilldrick

0
var characters = "<%= @poop.to_json -%>"; 
+0

私はダウンボートしなかったが、これはうまくいかなかった。 – s84

+0

JavaScriptのRuby構文ですか? (私はどちらかをdownvoteしなかった) – Skilldrick

+0

私はそれをここで働いて見ているが、多分それはhamlです。 「<%= -%>」と入力してください。 @skilldrick、js.erbはインラインのjavascriptと同じくらいうまく動作します。 downvoterについては、コメント!この質問にはベストプラクティスの言及はありません。 – mark

2

理想的には、我々は適切に答えることをより多くの情報が必要ですが、私はあなたを助けるためにいくつかのものを推測するつもりだ...

仮定#1:あなたはERB構文に(それらの「= <%」を使用していて、 "%>")を.jsファイルに追加します。これらはRailsによって意味のあるものには解析されません。

あなたのやりたいことは、テンプレートまたはビューでインラインJSを使用することです。しかし、他の言語からのJavascriptの生成は厄介なことがあります。注意して使用してください。

+0

私は.html.erbを使用しています – s84