2011-01-16 18 views
6

Sto provando a utilizzare l'helper per le guide button_to. Ho scritto il seguente codice:Button_to in Ruby on Rails route errata

<%= button_to 'Edit Item', edit_item_path(@item), :class => 'mark-button' %>

ed ho ottenuto il seguente messaggio di errore

No route matches "/items/1/edit"

Ma quando mi aggiorna la pagina va per l'azione appropriata. L'URL della pagina che ottengo è localhost:3000/items/1/edit che è l'URL corretto. Se cambio il comando button_to su link_to, la pagina è stata caricata senza errori. Significato di questo codice:

<%= link_to 'Edit Item', edit_item_path(@item), :class => 'mark-button' %>

carichi bene. Forse c'è qualche caratteristica di button_to di cui non sono a conoscenza, ma sono perso.

risposta

5

Penso che si possa abusare di button_to. Ho sempre pensato che se stai collegando all'azione di modifica, dovresti usare link_to. I pulsanti sembrano essere per azioni che devono pubblicare/inserire dati come l'aggiornamento di un modulo o l'eliminazione di un record.

Aggiornamento:

Per impostazione predefinita, button_to usa POST invece di GET. Quindi funziona quando si visita l'URL (cioè GET).

+0

Come posso ignorare questa funzione? – Nayish

+0

Se vuoi che assomigli ad un pulsante, vorrei usare link_to e usare una classe CSS che faccia apparire il tuo link come un pulsante. Ottimo articolo qui: http://www.smashingmagazine.com/2009/11/18/designing-css-buttons-techniques-and-resources/ – dontangg

+2

@nayish puoi impostare il metodo per ottenere: 'button_to 'edit', edit_item_path (@item),: method =>: get' –

2

pulsante_per i valori predefiniti per POST e link_to per impostazione predefinita su GET.

Se è davvero necessario pulsante_per modificare il metodo predefinito su GET per la modifica e altri collegamenti.

es:

<%= button_to 'Edit', edit_user_path(@user), :method => :get %>