0
0

More than 1 year has passed since last update.

【Rails】escape_javascriptメソッド【jQuery】

Last updated at Posted at 2021-12-09

はじめに

 本記事は、プログラミングの学習を始めて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と記述するだけでも呼び出すことができる。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0