Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Replacement for Rails' default button_to helper
- # using HTML button element rather than HTML input element
- def button_to(name, options = {}, html_options = {})
- html_options = html_options.stringify_keys
- convert_boolean_attributes!(html_options, %w( disabled ))
- method_tag = ''
- if (method = html_options.delete('method')) && %w{put delete}.include?(method.to_s)
- method_tag = tag('input', :type => 'hidden', :name => '_method', :value => method.to_s)
- end
- form_method = method.to_s == 'get' ? 'get' : 'post'
- request_token_tag = ''
- if form_method == 'post' && protect_against_forgery?
- request_token_tag = tag(:input, :type => "hidden", :name => request_forgery_protection_token.to_s, :value => form_authenticity_token)
- end
- if confirm = html_options.delete("confirm")
- html_options["onclick"] = "return #{confirm_javascript_function(confirm)};"
- end
- url = options.is_a?(String) ? options : self.url_for(options)
- name ||= url
- html_options.merge!("type" => "submit", "value" => name)
- "<form method=\"#{form_method}\" action=\"#{escape_once url}\" class=\"button-to\">" +
- method_tag + content_tag("button", name, html_options) + request_token_tag + "</form>"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement