Ну, я использую jQuery, и я делаю следующее, пытаясь быть ненавязчивым:
Добавьте это прямо перед тегом </head>
:
= yield :document_ready
Тогда в вашем application_helper.rb:
def document_ready(content)
html = %{ $(function(){#{content}})}
content_for(:document_ready){ javascript_tag(html) }
end
Это позволяет загружать и запускать javascript после загрузки документа.
Вверху представления, содержащего вашу форму, добавьте:
- document_ready("hide_button_show_spinner('your_button_id')")
В приложении. Js
function hide_button_show_spinner(element_id) {
$('#'+element_id).bind('click', function() {
$('#'+element_id).after("<img src='/path/to/your/spinner.gif' class='ajax_loader' id='"+element_id+"_ajax_loader' style='display: none'/>")
$('#'+element_id).hide();
$('#'+element_id+'_ajax_loader').show();
});
}
Это скроет кнопку и покажет спиннер после нажатия кнопки. Возможно, вам придется адаптировать это к вашему конкретному случаю.
Затем вы можете показать кнопку и скрыть счетчик в своем ответе javascript (файл .js.erb, который вы отображаете из действия, вызванного запросом ajax).