Method: ActionView::Helpers::JavaScriptHelper#button_to_function

Defined in:
lib/action_view/helpers/javascript_helper.rb

#button_to_function(name, *args, &block) ⇒ Object

Returns a button with the given name text that’ll trigger a JavaScript function using the onclick handler.

The first argument name is used as the button’s value or display text.

The next arguments are optional and may include the javascript function definition and a hash of html_options.

The function argument can be omitted in favor of an update_page block, which evaluates to a string when the template is rendered (instead of making an Ajax request first).

The html_options will accept a hash of html attributes for the link tag. Some examples are :class => “nav_button”, :id => “articles_nav_button”

Note: if you choose to specify the javascript function in a block, but would like to pass html_options, set the function parameter to nil

Examples:

button_to_function "Greeting", "alert('Hello world!')"
button_to_function "Delete", "if (confirm('Really?')) do_delete()"
button_to_function "Details" do |page|
  page[:details].visual_effect :toggle_slide
end
button_to_function "Details", :class => "details_button" do |page|
  page[:details].visual_effect :toggle_slide
end


122
123
124
125
126
127
128
129
# File 'lib/action_view/helpers/javascript_helper.rb', line 122

def button_to_function(name, *args, &block)
  html_options = args.extract_options!.symbolize_keys

  function = block_given? ? update_page(&block) : args[0] || ''
  onclick = "#{"#{html_options[:onclick]}; " if html_options[:onclick]}#{function};"

  tag(:input, html_options.merge(:type => 'button', :value => name, :onclick => onclick))
end