0

ruby ビュー ファイルでタグを見たのですが、その中の が何を表して<%=j some-variable %>いるのか誰か教えてもらえないだろうかと思っていました。ルビーを出力するために使用され、ビューでルビーコードを使用するために使用されるjことを私は知っています。<%= %><% %>

4

3 に答える 3

5

Ruby on Rails ビューでj()は、次のエイリアスですescape_javascript()

JavaScript セグメントのキャリッジ リターンと一重引用符と二重引用符をエスケープします。

これは通常、DOM 操作で使用されます。たとえば、別の ERB テンプレートをレンダリングし、その出力を JS 関数のパラメーターとして使用する場合などです。

jQuery を使用している場合、新しいレコードを作成した後、JS 応答に次のようなものが含まれている可能性があります。

$('ul#items').append('<%= j render(resource) %>');

これにより、リソースに対応するパーシャルがレンダリングされ、Javascript 文字列として使用できるように結果がエスケープされ、エスケープされた文字列が引用符で囲まれ、最終的な文字列が DOM ノードに追加されます。

アップデート:

(これは、他の回答の 1 つに関するディスカッションでの私のコメントから派生したものです。)

多くの Ruby 開発者は、空白を区切らずjに の隣に右を書きます。少なくとも内側のメソッド呼び出し引数を次のように囲むのが一般的ですが、<%=一部の書き込み: .<%=j render 'something' %>puts some_method('bar')

hRails が文字列の自動エスケープを開始する前に、HTML をエスケープするためのエイリアスと同じ話でした。

于 2013-10-15T20:07:08.740 に答える
3

これは略語だと確信していますescape_javascript

<%=j some-variable %> => <%= escape_javascript some-variable %>

これのソースを見つけようとします


ここにソースがあります。これは Rails 4.0 でのみ使用できることに注意してください。

したがって、実際にはわかりません-ドキュメントのコンテキストでは、render...に関連して使用する必要があるように見えます

$('some_element').replaceWith('<%=j render 'some/element_template' %>');
于 2013-10-15T20:03:53.367 に答える
2

この例では、jはメソッドであり、some-variableはそのパラメーターです。メソッドが呼び出された後、この呼び出しの結果が文字列に変換され、ビューに挿入されます。

より正確には、JavaScript 文字をエスケープするメソッドのjエイリアスです。escape_javascript

于 2013-10-15T20:02:09.617 に答える