instance method button

Ruby on Rails 8.0.4

Since v3.2.22.5

Available in: v3.2.22.5 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

button(value = nil, options = {}, &block)

Add the submit button for the given form. When no value is given, it checks if the object is a new resource or not to create the proper label:

<%= form_with model: @article do |f| %>
  <%= f.button %>
<% end %>

In the example above, if @article is a new record, it will use “Create Article” as button label; otherwise, it uses “Update Article”.

Those labels can be customized using I18n under the helpers.submit key (the same as submit helper) and using %{model} for translation interpolation:

en:
  helpers:
    submit:
      create: "Create a %{model}"
      update: "Confirm changes to %{model}"

It also searches for a key specific to the given object:

en:
  helpers:
    submit:
      article:
        create: "Add %{model}"
Examples
button("Create article")
# => <button name='button' type='submit'>Create article</button>

button(:draft, value: true)
# => <button id="article_draft" name="article[draft]" value="true" type="submit">Create article</button>

button do
  content_tag(:strong, 'Ask me!')
end
# => <button name='button' type='submit'>
#      <strong>Ask me!</strong>
#    </button>

button do |text|
  content_tag(:strong, text)
end
# => <button name='button' type='submit'>
#      <strong>Create article</strong>
#    </button>

button(:draft, value: true) do
  content_tag(:strong, "Save as draft")
end
# =>  <button id="article_draft" name="article[draft]" value="true" type="submit">
#       <strong>Save as draft</strong>
#     </button>

Parameters

value opt = nil
options opt = {}
block block
Source
# File actionview/lib/action_view/helpers/form_helper.rb, line 2650
      def button(value = nil, options = {}, &block)
        case value
        when Hash
          value, options = nil, value
        when Symbol
          value, options = nil, { name: field_name(value), id: field_id(value) }.merge!(options.to_h)
        end
        value ||= submit_default_value

        if block_given?
          value = @template.capture { yield(value) }
        end

        formmethod = options[:formmethod]
        if formmethod.present? && !/post|get/i.match?(formmethod) && !options.key?(:name) && !options.key?(:value)
          options.merge! formmethod: :post, name: "_method", value: formmethod
        end

        @template.button_tag(value, options)
      end

Defined in actionview/lib/action_view/helpers/form_helper.rb line 2650 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActionView::Helpers::FormBuilder

Type at least 2 characters to search.

Use the arrow keys to navigate results, Enter to open one, Escape to close.

Keyboard shortcuts

/
Focus search
⌘K / Ctrl-K
Command palette
?
This help
Esc
Close