module ActionView::Helpers::JavaScriptHelper - actionview-4.2.3 Documentation

# module ActionView::Helpers::JavaScriptHelper

### Constants

JS_ESCAPE_MAP

### Public Instance Methods

escape_javascript(javascript) click to toggle source

Escapes carriage returns and single and double quotes for JavaScript segments.

Also available through the alias j(). This is particularly helpful in JavaScript responses, like:

    $('some_element').replaceWith('<%=j render 'some/element_template' %>');

    # File lib/action_view/helpers/javascript_helper.rb, line 25
    def escape_javascript(javascript)
      if javascript
        result = javascript.gsub(/(\|<\/|\r\n|\342\200\250|\342\200\251|[\n\r"'])/u) {|match| JS_ESCAPE_MAP[match] }
        javascript.html_safe? ? result.html_safe : result
      else
        ''
      end
    end

Also aliased as: j
j(javascript)
Alias for: escape_javascript
javascript_tag(content_or_options_with_block = nil, html_options = {}, &block) click to toggle source

Returns a JavaScript tag with the `content` inside. Example:

    javascript_tag "alert('All is good')"

Returns:

    <script>
    //<![CDATA[
    alert('All is good')
    //]]>
    </script>

`html_options` may be a hash of attributes for the `<script>` tag.

    javascript_tag "alert('All is good')", defer: 'defer'

Returns:

    <script defer="defer">
    //<![CDATA[
    alert('All is good')
    //]]>
    </script>

Instead of passing the content as an argument, you can also use a block in which case, you pass your `html_options` as the first parameter.

    <%= javascript_tag defer: 'defer' do -%>
      alert('All is good')
    <% end -%>

    # File lib/action_view/helpers/javascript_helper.rb, line 64
    def javascript_tag(content_or_options_with_block = nil, html_options = {}, &block)
      content =
        if block_given?
          html_options = content_or_options_with_block if content_or_options_with_block.is_a?(Hash)
          capture(&block)
        else
          content_or_options_with_block
        end

      content_tag(:script, javascript_cdata_section(content), html_options)
    end