2010-03-01 30 views

Respuesta

25

Un link_to siempre poner los argumentos en la cadena de consulta, ya que es la creación de un enlace HTML de estilo get - incluso si usted pone :method => :post que simplemente añade un nuevo ("especial") argumento extra _method.

Lo que creo que realmente quieres es un enlace button_to - que lo convertirá en una especie de formulario de entrada. Funciona de la misma, pero no dice button_to lugar (por ejemplo, button_to 'My link', path(:params => :go_here). La desventaja es que se verá como un botón. Pero usted puede darle una clase CSS (por ejemplo, "unbutton") y luego cambiar el estilo de esa clase CSS para que no se vea como un botón.

Alternativamente, si lo que realmente quiere es que en realidad no tenga params pasado al controlador ... simplemente no los incluya al hacer su enlace (por ejemplo, link_to "My link" path - no hay necesidad de :post si no desea publicar ningún params)

por último, si lo que queremos es que la params para convertirse en una parte de la dirección URL (por ejemplo,., etc.) luego debe actualizar sus rutas para incluir estos parámetros como opciones. Eche un vistazo a la sección de enrutamiento de rdoc para saber cómo hacerlo.

+1

Esta solución me ha llevado horas de google! Soy nuevo en Rails. button_to solucionó mi problema. Muchas gracias! – Will

+1

Actualización sobre eso: 4.1 envía button_to con un parámetro params (con el gotcha de que no permite parámetros anidados, * masa *), donde los parámetros realmente se construyen utilizando campos ocultos. Eso es probablemente lo que quieres. – Felix

+0

Neato ... bueno, mi consejo sigue siendo Rails pasado, pero es bueno ver que finalmente tienen una solución de algún tipo por ahí. –

-1

Puede usar el siguiente código, que rails.js necesita el método de datos para cambiar al modo de publicación en 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} %>

Cuestiones relacionadas