instance method
button
Ruby on Rails 8.1.2
Since v3.2.22.5Signature
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
-
valueopt = nil -
optionsopt = {} -
blockblock
Source
# File actionview/lib/action_view/helpers/form_helper.rb, line 2649
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 2649
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActionView::Helpers::FormBuilder