2010-01-30 18 views
8

He encontrado un problema al usar el link_to. ¿Por qué mi enlace para usar el método GET y mi botón_para usar el método POST, después de haber especificado mi "método" => "publicar" dentro de los parámetros link_to?Button_to usa POST Link_to usa GET, ¿por qué? ROR

Vista:

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

Método de control:

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

Terminal de salida (botón/enlace, respectivamente):

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"} 

Respuesta

11

Creo que las opciones de HTML tienen que estar en un hash separado de sus opciones de URL:

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

miré todo para un ejemplo apropiado, sin suerte. Para mi código, he dado sobre todo hacia arriba y sólo tiene que utilizar el nuevo estilo:

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

Tengo este mismo problema con ROR 3.0.17 (o 18, o 19, no recuerdo). Hice el marcado al igual que este "nuevo estilo" que está trabajando en la mayoría de las páginas, excepto en una página específica. La llamada es exactamente lo mismo, no sé lo que está mal. También Firebug muestra que el enlace tiene 2 parámetros de datos: confirmación de datos y método de datos. ¿Se supone que esto es correcto? –

1

Una posibilidad es que tienes el Javascript desactivado, en en ese caso volverá a caer en un GET.

+1

esté activado Javascript. –

6

podría ser útil para alguien que está de visita :)

Por defecto, button_to sólo realiza una acción POST.

que hacen A obtener la sintaxis es la siguiente:

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

Funciona, pero solo si pasa ': get' como un símbolo o' 'get '' en minúscula. La cadena '" GET "' no funciona. Solo un poco. – Gunchars

+3

Cuando hago esto, agrego un signo de interrogación "?" hasta el final de mi URL ¿Alguien más ve esto o tiene una solución? –

+1

@TrevorMcKendrick puede ser útil http://stackoverflow.com/a/8122116/1297435 –