Я использую Ruby on Rails 3, и я хотел бы отключить и переключить класс CSS из form.submit
, когда форма отправлена с помощью AJAX, и до тех пор, пока HTTP-запрос AJAX не будет завершен (я использую структуру jQuery по умолчанию для JavaScript).
Моя форма выглядит следующим образом:
<%= form_for(@article, :remote => true) do |form| %>
...
<%= form.submit(nil, {:id => 'button_id', :class => 'button_class'}) %>
<% end %>
Как я могу сделать это "обычно"/"хорошо"/"правильно"?
У кода Rails jQuery bridge (jquery_ujs.js) на самом деле есть помощник для этого.
<%= form.submit "Save", id: "button_id", class: "button", disable_with: "Submitting..."
Он заменит текст кнопки на заданное вами значение.
См. http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-submit_tag
Изменение API: как предлагает Ренан в комментарии ниже, начиная с Rails 4 beta , опция disable_with
содержит уведомление об устаревании. Его следует изменить, чтобы он стал атрибутом данных:
<%= form.submit "Save", id: "button_id", class: "button", data: {disable_with: "Submitting..."} %>
Это должно работать со всеми последними версиями Rails, так как в любом случае это опция. Так что при обновлении до Rails 4 исправление будет меньше, чем исправлено :):