2011-12-30 11 views
13

Tengo el siguiente botón, que sobreescrito para generar una petición GET:button_to opción método GET en los carriles con

= button_to "Tutor", {:controller => "appointments", :action => "new", 
    :listing_id => @listing.id} , :method => :get 

Sin embargo, sigo teniendo una solicitud POST con params adicionales: Método:

Processing by AppointmentsController#new as HTML 
    Parameters: {"authenticity_token"=>"AWkL", "listing_id"=>"2", "method"=>"get"} 

de presentar mi rutas, que tengo:

resources :appointments 

¿Qué hice mal?

Gracias. No se supone que

Respuesta

12

Botones que se deben enviar las solicitudes GET.

se debe utilizar un link_to lugar. Si quieres que se vea como un botón, aplica algo de CSS. He aquí un buen artículo: http://coding.smashingmagazine.com/2009/11/18/designing-css-buttons-techniques-and-resources/

+1

¿Qué pasa con botones de búsqueda? A menudo usan solicitudes 'GET'. – mwfearnley

+1

Esto no responde la pregunta. Cuando alguien pregunta: "¿Cómo hago X?" está cambiando el tema para responder con "No debería hacer X, sino Y en su lugar". –

+1

@LukeLaupheimer: a veces (con bastante frecuencia, de hecho), ES UNA respuesta válida. Quizás no en este caso. –

1

Es posible que desee ver en la UJS driver code:

a\[data-method\] es el selector se utiliza aquí:

Así que el siguiente debe funcionar (realmente no podía probarlo):

button_to "Tutor", {...}, :html => { "data-method" => "get" } 
+0

Gracias Tigraine. Tu solución no funciona para mí Sospecho que podría haber un conflicto entre Prototype (que eliminé) con jQuery que me impide forzar un método get. – AdamNYC

+0

Ah lo siento .. Yo miraba al código EPU y pensamos que esto debería funcionar .. Por lo menos si se utiliza un etiquetar '' debería – Tigraine

30

Sólo tiene que utilizar método: y : obtener

button_to "New User", new_user_path, method: :get 
+0

Eso es lo que usa, no? –

+1

En caso de que tenga algunas opciones html, recuerdan a envolver todo en un hash: 'button_to "nuevo usuario", new_user_path, {método: 'conseguir', clase: "alguna clase"}' – borjagvo

+0

O si es necesario utilizar una hash de ruta, asegúrese de separar el 'method' de él:' button_to "Frob User", {action:: frob, id: user.id}, method:: get' – mwfearnley

Cuestiones relacionadas