2010-03-01 9 views

risposta

25

Un link_to sarà sempre messo gli argomenti nella stringa di query come si sta creando un collegamento HTML get-stile - anche se si mette :method => :post che solo aggiunge un ulteriore argomento ("special") _method.

Quello che penso che tu voglia veramente è un collegamento button_to - che lo trasformerà in una sorta di modulo. Funziona allo stesso modo, ma invece è (ad esempio, button_to 'My link', path(:params => :go_here). Il lato negativo è che assomiglierà a un pulsante, ma puoi dargli una classe CSS (ad esempio "unbutton") e quindi modificare lo stile su quella classe CSS per renderlo diverso da un pulsante:

In alternativa, se ciò che realmente si desidera è in realtà non avere alcun params passato al controller ... quindi non includerli quando si effettua il collegamento (ad esempio, link_to "My link" path - non c'è bisogno per :post se non si desidera inviare alcun params)

Infine, se quello che vuoi è per il params entrare a far parte del URL (ad esempio,., ecc.), Quindi è necessario aggiornare i percorsi per includere questi parametri come opzioni. Dai un'occhiata alla sezione di routing del rdoc per come farlo.

+1

Questa soluzione mi ha richiesto ore di googling! Sono nuovo di Rails. button_to risolto il mio problema. Grazie mille! – Will

+1

Aggiornamento al riguardo: 4.1 spedisce button_to con un parametro params (con getcha che non consente parametri nidificati, * dough *), dove i parametri sono realmente costruiti usando campi nascosti. Questo è probabilmente quello che vuoi. – Felix

+0

Neato ... beh ... il mio consiglio è ancora valido per Rails passato, ma è bello vedere che finalmente hanno trovato una soluzione di qualche tipo là fuori. –

-1

È possibile utilizzare il codice seguente, che rails.js richiede il metodo dati per passare alla modalità post in Ajax.

<%= link_to '<button id="print" type="submit" class="btn">Print</button>'.html_safe, { controller: :lots, id: @lot.containername, action: "print_#{print_template}", remote: true }, {'data-method' => :post} %>