2009-09-19 16 views
6

Utilizzando lo stesso modulo parziale in entrambi creare e modificare nel mio caso nuovo e anteprima. sguardi parziali un po 'come questo (io uso HAML)= button_to non genera modulo se già in un altro modulo

=form_tag ({:action => params[:action]}, :multipart => true) 
    =text_field :newsletter, :title 
    =text_area :newsletter, :body 
    =file_field :newsletter,:attachment 
    -if params[:action] == "preview" 
    =button_to "select contacts and send", :action => "contacts" 
    =submit_tag "save and preview" 

ma nel html-uscita è

... 
<input type="submit" value="select contacts and send"/> 
<input type="hidden" value="rwYnZlEpWV4dR89zjgprEALBYmP0xqM3lnKt9JDLyak=" name="authenticity_token"/> 
<input type="submit" value="save and preview" name="commit"/> 
... 

Perché il button_to non generare il tasto-per formare?

una soluzione è quella di mantenere il pulsante esterno parziale e solo 1 per modulo, ma come posso avere 2 pulsanti nella stessa forma?

edit: un'altra soluzione sarebbe una casella di controllo nascosto che viene impostato da JavaScript se si preme il button_to e invia il modulo, che li separa nel controller

risposta

12

HTML in realtà non consentire forme di essere nidificate. Alcuni browser lo fanno, ma in altri vedrai un comportamento pazzo. L'HTML che stai mostrando è l'output raw o il DOM calcolato da firebug?

Il modo migliore per gestire questo caso è spostare il numero button_to all'esterno dell'altro modulo. Se sei bello con le opzioni solo JS, puoi usare link_to :method => :post e modellare il link in modo che assomigli ad un pulsante.

1

Alla fine usato il

:name => 'otheraction' 

nel controllore poi controllato se uno

params[:commit] or params[:otheraction] 

era nel params hash

Problemi correlati