はじめに
本記事は、プログラミングの学習を始めて1ヶ月の初学者が、学習を進めていて疑問に思った点について調べた結果を備忘録も兼ねてまとめたものです。
そのため、記事の内容に誤りが含まれている可能性があります。ご容赦ください。
間違いを見つけた方は、お手数ですが、ご指摘いただけますと幸いです。
今回の疑問点
今回の疑問点は、
escape_javascriptメソッドについて
です。
以前、非同期通信でのコメント投稿機能を実装した際に上記について疑問を抱きました。
疑問点についての解説
###結論
JavaScriptファイルの中にHTMLを記述するときに実行結果をエスケープするためのメソッド
###エスケープ処理とは
エスケープ処理とは、記述したコードのままでは意図した通り表現できない文字列や改行を表現するために使用する、代替文字列処理のことです。
具体的には以下のような文字列を表すために使用します。
!"#$%&'()*+,./:;<=>?@[]^{|}~ 上記に加え、半角の空白 上記は
\`でエスケープすることができます。
###Railsのソースコードの確認
Railsでは、上記のエスケープ処理のためにescape_javascriptメソッドが用意されています。
以下、escape_javascriptメソッドが定義されている箇所の抜粋です。
def escape_javascript(javascript)
javascript = javascript.to_s
if javascript.empty?
result = ""
else
result = javascript.gsub(/(\\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"']|[`]|[$])/u, JS_ESCAPE_MAP)
end
javascript.html_safe? ? result.html_safe : result
end
alias_method :j, :escape_javascript
上記の通り、gsubメソッドを使って、HTMLを書き換えています。
また、alias_method
としてj
と設定されておりますのでただj
と記述するだけでも呼び出すことができます。
まとめ
最後にポイントをまとめます。
- escape_javascriptメソッドは、JavaScriptファイルの中にHTMLを記述するときに実行結果をエスケープするためのメソッド
-
j
と記述するだけでも呼び出すことができる。