#html #twitter-bootstrap #ruby-on-rails-4 #erb
#HTML #твиттер-bootstrap #ruby-on-rails-4 #ошибка #twitter-начальная загрузка
Вопрос:
У меня есть приложение RoR, использующее bootstrap. Я пытаюсь применить тег fontawesome html icon к вспомогательному элементу submit_tag, но, похоже, он не поддерживается. Когда я нажимаю отправить, содержимое disable просто отображается в виде строки вместо того, чтобы интерпретироваться в html, хотя для link_to helper это так.
Вот ошибка:
<%= form_tag("/home/search", method: "get", class: "form-inline", role: "search", remote: true) do %>
<div class="form-group">
<%= text_field_tag(:term, nil, {:class => "form-control", "data-html" => true, :value => @term}) %>
</div>
<%= submit_tag "Go!", class: "btn btn-transparent", role: "button", 'data-disable-with' => "<i class='fa fa-spinner fa-spin'></i> Searching...".html_safe %>
<% end %>
Вот как это выглядит, когда я нажимаю отправить:
Это работает с link_to , но тогда я не могу передать значение из text_field_tag в link_to в противном случае, я был бы доволен этим решением. Я бы действительно предпочел не писать метод .ajax самостоятельно и не использовать javascript для манипулирования значениями кнопок. Есть какие-либо предложения о том, как решить эту проблему с помощью стандартных тегов FormHelper? Заранее большое спасибо.
Комментарии:
1. Попробуйте указать это следующим образом
<%= submit_tag "Go!", class: "btn btn-transparent", role: "button", data: { disable_with: "<i class='fa fa-spinner fa-spin'></i> Searching...".html_safe} %>
2. Привет, Паван, да, определенно пробовал и это тоже. То же самое… :
3. @Pavan Вы не можете использовать,
submit_tag
но использованиеbutton_tag
будет работать.
Ответ №1:
Вы должны попытаться изменить submit_tag на button_tag, что-то вроде этого:
<%= button_tag "Go!", class: "btn btn-transparent", 'data-disable-with' => "<i class='fa fa-spinner fa-spin'></i> Searching...".html_safe %>
Комментарии:
1. Спасибо, Лавилет, этот button_tag сделал свое дело, это то, что мне было нужно.
2. Это определенно правильный ответ.
submit
HTML-теги имеют совсем другой стиль, чемbutton
теги. Использованиеbutton
все равно отправит форму, но также разрешит встроенные HTML-теги.
Ответ №2:
При использовании simple_form
:
<%= f.button :button,
'Save',
class: 'my-class',
data: {
disable_with: '<i class="fa fa-spinner fa-spin"></i>'
} %>
Ответ №3:
Я использую Rails почти 10 лет, и я просто наткнулся на disable_with
… аккуратно!
Вы также можете использовать content_tag helper
, если вы не хотите вставлять необработанный HTML … например (простая форма):
= 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
}
Конечно, его, вероятно, проще преобразовать в помощника…
# 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
}
Обратите внимание, в этих примерах я использую Simple Form и Slim.
Ответ №4:
Краткий совет по созданию button_to с html_safe и disable_with:
<%= button_to some_path, method: :post, class: 'btn btn-md btn-primary', "data-disable-with": '<span class="fa fa-2x fa-spinner fa-spin"></span>'.html_safe do %>
<span class="fa fa-2x fa-facebook-square"></span>
<% end %>
Ответ №5:
Мой подход:
<%= submit_tag 'Submit, data: { disable_with: 'Processing...' } %>