Module: Bootstrap::FormHelper

Defined in:
app/helpers/bootstrap/form_helper.rb

Overview

Rails helper methods associated with forms for Bootstrap.

Examples:

Bootstrap form-actions <div>

<div class='form-actions'>
  <%= submit_button_tag %>
  <%= cancel_button_tag %>
</div>

Constant Summary collapse

ArgumentError =
Class.new(StandardError)
InvalidButtonModifierError =
Class.new(StandardError)

Instance Method Summary collapse

Instance Method Details

#cancel_button_tag(text, type, size, options = {}) ⇒ String

Convenience method for standard “Cancel” button.

The text, type, and size arguments are all optional.

Has same semantics as calls to ButtonHelper#button except:

  • text defaults to “Cancel”

  • :url option is required

Examples:

cancel_button_tag(url: '/')
cancel_button_tag('Go Back', url: '/')
cancel_button_tag(:info, url: '/')
cancel_button_tag(:large, url: '/')
cancel_button_tag('Return', :small, :warning, url: '/', id: 'my-id')

Options Hash (options):

  • :url (String)

    required

Raises:



33
34
35
36
37
38
39
40
41
42
# File 'app/helpers/bootstrap/form_helper.rb', line 33

def cancel_button_tag(*args)
  options = canonicalize_options(args.extract_options!)
  raise(ArgumentError, "must pass a :url option") unless options.has_key?(:url)
  options = ensure_class(options, 'btn')
  
  args.map!(&:to_s)
  args.unshift("Cancel") if args.all? { |e| ::Bootstrap::ButtonHelper::BUTTON_ALL.include?(e) }

  button(*args, options)
end

#submit_button_tag(text, type, size, options = {}) ⇒ String

Returns <input> similar to #submit_tag() but: x

  • styled like a Bootstrap button, type :primary

  • has :disable_with set to “Processing …”

See ButtonHelper for documentation on button type and size

submit_button_tag('Save')
submit_button_tag('Delete', :danger)
submit_button_tag('Big', :large)
submit_button_tag('With Options', :small, :info, id: 'my-id')

Options Hash (options):

  • :disable_with (String, false)

    either override or turn off the disabling of the button



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'app/helpers/bootstrap/form_helper.rb', line 59

def submit_button_tag(*args)
  options = canonicalize_options(args.extract_options!)
  
  value = if Bootstrap::ButtonHelper::BUTTON_ALL.include?(args.first.to_s)
    "Save changes"
  else
    args.shift.presence || "Save changes"
  end

  button_classes = if args.present?
    args.each { |e| raise(InvalidButtonModifierError, e.inspect) unless
       Bootstrap::ButtonHelper::BUTTON_ALL.include?(e.to_s) }
    ['btn'] + args.map { |e| "btn-#{e}" }
  else
    ['btn', 'btn-primary']
  end
  options = ensure_class(options, button_classes)

  options[:disable_with] = "Processing ..." unless options.has_key?(:disable_with)

  submit_tag(value, options)
end