0

これを含む基本的な.jsファイルがあります

//$('#show').html('<%= escape_javascript(render(:partial => 'show')) %>');

.jsファイルが呼び出されると、上記のコードが実行され、コメントアウトされていてもパーシャルがレンダリングされます。コードが削除されると、パーシャルはレンダリングされません。DOMは変更されていませんが、コマンドラインでサーバーによって部分的にレンダリングされていることがわかります。何が得られますか?

4

4 に答える 4

4

クライアント側で実行されるJavaScriptをコメントアウトしています。

部分的なレンダリングは、クライアントがレンダリングされたJavaScriptを見る前に、サーバー側で行われます。

つまり、JavaScriptをコメントアウトしても、サーバー側の処理には何の影響もありません。サーバー側の文字列を表示したくない場合は、コメントアウトしてください。

<%#= escape_javascript(etc) %>

次のような部分的なレンダリングを想定しましょう。

<h1>Foo bar baz</h1>
<div>Plugh!</div>

これをJavaScriptでエスケープすると、改行が\n(および一重引用符や二重引用符などをエスケープして)クライアント側に残ります。

$('#show').html('<h1>Foo bar baz</h1>\n<div>Plugh!</div>');

JSがコメント化されているかどうかに関係なく、escape_javascriptRubyコードの結果をコメント化しない限り、パーシャルはレンダリングされます。

クライアント側では、JSがコメント化されている場合、そのHTMLを更新するべきではありませんshow-そうだと言っていますか?

于 2012-05-19T22:38:54.947 に答える
0

これが回線であるかどうか、または他の場所に電話をかけているかどうかを確認してください。

//$('#show').html('<%=escape_javascript(render(:partial => 'show'))%>');alert('This is the line');
于 2012-05-19T09:42:25.243 に答える
0

おそらくあなたのescape_javascript関数は改行を挿入していますか?これでコメントが終了し、改行の後に何かが実行されます。

于 2012-05-19T09:44:42.320 に答える
0

私も同様の問題を抱えていて、私が望んでいたことの回避策を見つけました。おそらく、このようなものがあなたを助けるでしょう!

コードの行をコメントアウトする代わりに、実行する関数の「オン/オフ」トグルを提供する論理演算子を作成してみてください。スクリプトをオフにすることができるように、このように設定しましたが、将来の参照用に保持します。

var toggle = 1; 

if(toggle == 2){
   functions that you want to run when turned on... 
}

変数は2に等しくないため、ifステートメントはその中に格納されているものをレンダリングせず、そのコードを効果的に「コメント」します。オンに戻すには、「toggle」変数を2(または「on」の値)に戻すだけです。私が自分で見つけたほんの少しの回避策、それが役立つことを願っています!

于 2014-12-02T14:26:27.117 に答える