2010-01-30 12 views
8

Ho avuto un problema con l'uso di link_to. Perché il mio link utilizza il metodo GET e il mio pulsante_ per utilizzare il metodo POST, dopo aver specificato il mio "metodo" => "post" all'interno dei parametri link_to?Button_to usa POST Link_per utilizzare GET, perché? ROR

Vista:

<%= button_to "pdf", :action => 'getquote' %> 
<%= link_to 'pdf', {:controller => 'inventories', :action => 'getquote', :method => :post } %> 

Metodo di controllo:

def getquote 
@cart = find_cart 
respond_to do |format| 
format.pdf 
end 
end 

terminale di uscita (Pulsante/Link, rispettivamente):

Processing InventoriesController#getquote (for 127.0.0.1 at 2010-01-30 01:38:02) [POST] 
    Parameters: {"action"=>"getquote", "authenticity_token"=>"D2cwnHyTHgomdUM3wXBBXlOe4NQLmv1Srn0paLbExpQ=", "controller"=>"inventories"} 

Processing InventoriesController#show (for 127.0.0.1 at 2010-01-30 01:39:07) [GET] 
    Parameters: {"method"=>"post", "action"=>"show", "id"=>"getquote", "controller"=>"inventories"} 

risposta

11

penso che le opzioni del HTML devono essere in un hash separata dalle opzioni del tuo url:

<%= link_to 'pdf', {:controller => 'inventories', :action => 'getquote'}, {:method => :post } %> 

ho guardato tutto per un giusto esempio, senza fortuna. Per il mio codice, ho in gran parte rinunciato e basta usare il nuovo stile:

<%= link_to 'Delete', custom_event, :confirm => 'Are you sure?', :method => :delete %> 
+0

Sto riscontrando lo stesso problema con ROR 3.0.17 (o 18, o 19, non ricordo). Ho fatto il markup proprio come questo "nuovo stile" sta lavorando sulla maggior parte delle pagine tranne una pagina specifica. La chiamata è la stessa identica cosa, non so cosa c'è che non va. Anche firebug mostra che il link ha 2 parametri di dati: conferma dati e metodo dati. Questo dovrebbe essere giusto? –

1

Una possibilità è che avete Javascript disattivato, in nel qual caso ricadrà su un GET.

+1

sia abilitato JavaScript. –

6

potrebbe essere utile per qualcuno che è in visita :)

Per impostazione predefinita, button_to esegue solo un'azione POST.

per fare fare un GET la sintassi è la seguente:

<%= button_to 'pdf', { :action => 'getquote'}, :method => :get %> 
+1

Funziona, ma solo se si passa ': get' come un simbolo o in minuscolo' "get" '. String '" GET "' non funziona. Solo un po ' – Gunchars

+3

Quando faccio questo aggiunge un punto interrogativo "?" alla fine del mio URL. Qualcun altro lo vede o ha una correzione? –

+1

@TrevorMcKendrick potrebbe essere utile http://stackoverflow.com/a/8122116/1297435 –