2012-03-05 16 views
23

Sto usando Ruby on Rails 3 e vorrei disabilitare e toogle classe CSS di un form.submitquando il modulo è AJAX presentato e fino a quando la richiesta HTTP AJAX è completata (Sto usando il default jQuery framework per JavaScript).Come disabilitare un pulsante di invio del modulo "a là Ruby on Rails Way"?

La mia forma è la seguente:

<%= form_for(@article, :remote => true) do |form| %> 
    ... 
    <%= form.submit(nil, {:id => 'button_id', :class => 'button_class'}) %> 
<% end %> 

Come posso fare che in un/"buona" via "comune"/"corretta"?

risposta

42

Il codice del bridge jQuery bridge (jquery_ujs.js) in realtà ha un helper per questo.

<%= form.submit "Save", id: "button_id", class: "button", disable_with: "Submitting..." 

Sostituirà il testo del pulsante con il valore fornito.

Vedi http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-submit_tag

cambiamento API: come Renan suggerisce in un commento qui sotto, come di Rails 4 beta c'è un avviso di disapprovazione sull'opzione disable_with. Esso dovrebbe essere modificata per essere un attributo di dati:

<%= form.submit "Save", id: "button_id", class: "button", data: {disable_with: "Submitting..."} %> 

Questo dovrebbe funzionare con tutte le versioni più recenti di Rails come è quello che ha fatto l'opzione in ogni caso. Quindi ci sarà un avviso meno da correggere quando si aggiorna a Rails 4. :)

+0

Quindi, non c'è un ponte jQuery per il 'form.submit' ma solo per il' submit_tag'? – user502052

+0

Il metodo 'submit' di' FormBuilder' chiama 'submit_tag' con le opzioni trasmesse. –

+5

L'opzione 'disable_with' è stata deprecata a partire da rails 3.2.5. Ora usa ': data => {: disable_with => 'Invio in corso ...'}'. Fonte: http://apidock.com/rails/ActionView/Helpers/FormTagHelper/submit_tag#1305--disable-with-is-deprecated – Renan

Problemi correlati