[ruby-it] Form multibutton con JQuery. Come fare ?

Pietro Giorgianni giorgian a gmail.com
Ven 6 Nov 2009 10:05:13 CET


Il 05 novembre 2009 16.43, Ale Ds <alexdesi a gmail.com> ha scritto:
> Ciao a tutti,
> domandina a tutti quelli che usano jquery con rails:
>
> Se voglio rendere la chiamata submit di un form in una chiamata ajax
> basta inserire in application.js il seguente codice:
> ...
>    $('#new_user').submit(function(){
>        $.post($(this).attr('action'), $(this).serialize(), null,
> "script");
>        return false;
>    });
> ...
>
> ma cosa fare se si hanno piu' submit button nel form inquestione ?
>
> ho notato che il controller nn riceve in parameters il classico
> parametro "commit"=>"Inserisci", con cui potrei discrimirare i vari
> button del form

ciao,

secondo me, se non hai un motivo valido per farlo, non è il caso di
rinunciare a usare i submit, perché, tenendoli, rendi il form
funzionante sia con che senza js.

Proposta quick and dirty:

<input class="pulsante" type="submit" name="questo" value="sì"/>
<input class="pulsante" type="submit" name="quello" value="no"/>

nel js:

function crea_hidden(obj) {
    return '<input type="hidden" name="' + obj.attr('name') + '"
value="' + obj.val() + '"/>'
}

$('.pulsante').click(function()
{$('#new_user').append(crea_hidden($(this))); return true; });

$('#new_user').submit(function(){
        $.post($(this).attr('action'), $(this).serialize(), null,"script");
        return false;
    });

In questo modo il controller riceve gli stessi dati sia via ajax che non.

Nota forse ovvia: non conviene mai discriminare in base al valore del
submit, dato che può essere localizzato, ma piuttosto in base al nome
del campo, cioè con:
e, quindi, nel controller,

if params[:questo]
  ...
end


pietro


More information about the Ml mailing list