How to set html on data-disable-with to rails submit_tag
I've been using Rails for almost 10 years and I just stumbled across disable_with
... neat!
You may also use the content_tag helper
if you'd rather not insert raw HTML... for example (Simple Form):
= form.button :button,
t('.submit'),
class: 'btn btn-primary btn-block', \
data: { \
disable_with: [
content_tag(:span, '', class: 'spinner-grow spinner-grow-sm'), \
content_tag(:span,'Please wait...') \
].join \
}
Of course its probably cleaner to refactor into a helper...
# frozen_string_literal: true
module ApplicationHelper # :nodoc:
def disable_with_element(text = t('please_wait'))
[
content_tag(:span, '', class: 'spinner-grow spinner-grow-sm'),
content_tag(:span, text)
].join
end
end
= form.button :button,
t('.submit'),
class: 'btn btn-primary btn-block', \
data: { \
disable_with: disable_with_element \
}
Note, I'm using Simple Form and Slim in these examples.
If using simple_form
:
<%= f.button :button,
'Save',
class: 'my-class',
data: {
disable_with: '<i class="fa fa-spinner fa-spin"></i>'
} %>
You should try to change submit_tag to button_tag, something like this:
<%= button_tag "Go!", class: "btn btn-transparent", 'data-disable-with' => "<i class='fa fa-spinner fa-spin'></i> Searching...".html_safe %>