| Module | ActionView::Helpers::JavaScriptHelper |
| In: |
vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb
|
Provides functionality for working with JavaScript in your views.
Rails includes the Prototype JavaScript framework and the Scriptaculous JavaScript controls and visual effects library. If you wish to use these libraries and their helpers (ActionView::Helpers::PrototypeHelper and ActionView::Helpers::ScriptaculousHelper), you must do one of the following:
For documentation on javascript_include_tag see ActionView::Helpers::AssetTagHelper.
| JAVASCRIPT_PATH | = | File.join(File.dirname(__FILE__), 'javascripts') |
Returns a link that‘ll trigger a JavaScript function using the onclick handler.
Examples:
button_to_function "Greeting", "alert('Hello world!')"
button_to_function "Delete", "if confirm('Really?'){ do_delete(); }")
# File vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb, line 67
67: def button_to_function(name, function, html_options = {})
68: html_options.symbolize_keys!
69: tag(:input, html_options.merge({
70: :type => "button", :value => name,
71: :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function};"
72: }))
73: end
Includes the Action Pack JavaScript libraries inside a single <script> tag. The function first includes prototype.js and then its core extensions, (determined by filenames starting with "prototype"). Afterwards, any additional scripts will be included in undefined order.
Note: The recommended approach is to copy the contents of lib/action_view/helpers/javascripts/ into your application‘s public/javascripts/ directory, and use javascript_include_tag to create remote <script> links.
# File vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb, line 84
84: def define_javascript_functions
85: javascript = '<script type="text/javascript">'
86:
87: # load prototype.js and its extensions first
88: prototype_libs = Dir.glob(File.join(JAVASCRIPT_PATH, 'prototype*')).sort.reverse
89: prototype_libs.each do |filename|
90: javascript << "\n" << IO.read(filename)
91: end
92:
93: # load other librairies
94: (Dir.glob(File.join(JAVASCRIPT_PATH, '*')) - prototype_libs).each do |filename|
95: javascript << "\n" << IO.read(filename)
96: end
97: javascript << '</script>'
98: end
Escape carrier returns and single and double quotes for JavaScript segments.
# File vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb, line 101
101: def escape_javascript(javascript)
102: (javascript || '').gsub(/\r\n|\n|\r/, "\\n").gsub(/["']/) { |m| "\\#{m}" }
103: end
Returns a JavaScript tag with the content inside. Example:
javascript_tag "alert('All is good')" # => <script type="text/javascript">alert('All is good')</script>
# File vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb, line 107
107: def javascript_tag(content)
108: content_tag("script", javascript_cdata_section(content), :type => "text/javascript")
109: end
Returns a link that‘ll trigger a JavaScript function using the onclick handler and return false after the fact.
Examples:
link_to_function "Greeting", "alert('Hello world!')"
link_to_function(image_tag("delete"), "if confirm('Really?'){ do_delete(); }")
# File vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb, line 50
50: def link_to_function(name, function, html_options = {})
51: html_options.symbolize_keys!
52: content_tag(
53: "a", name,
54: html_options.merge({
55: :href => html_options[:href] || "#",
56: :onclick => (html_options[:onclick] ? "#{html_options[:onclick]}; " : "") + "#{function}; return false;"
57: })
58: )
59: end
# File vendor/rails/actionpack/lib/action_view/helpers/javascript_helper.rb, line 120
120: def array_or_string_for_javascript(option)
121: js_option = if option.kind_of?(Array)
122: "['#{option.join('\',\'')}']"
123: elsif !option.nil?
124: "'#{option}'"
125: end
126: js_option
127: end