Как отключить кнопку отправки формы «в стиле Ruby on Rails Way»?

Я использую 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 %>

Как я могу сделать это "обычно"/"хорошо"/"правильно"?

23
задан user502052 5 March 2012 в 17:13
поделиться

1 ответ

У кода 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 исправление будет меньше, чем исправлено :):

43
ответ дан 29 November 2019 в 01:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: