2010-12-07 9 views

Respuesta

34

Puede pasar parámetros en la función de trayectoria como parte de la URL. Algo como:

<%= link_to "bleh", 
    like_path(:answer_id => 123, :add_param => 2), 
    :remote=> true , :method=> :post %> 

# would result in something like 
# yourapp.com/like/aswer/3?add_param=2 

Pero creo que debe alejarse de la ruta puramente basada en recursos auxiliares en este caso. Consulte el documentation para obtener ideas.

24

Si no quiere poner los parámetros en el ayudante de ruta - tal vez porque hay una gran cantidad de ellos o que no saben cuando se genera la página - también puede ponerlos en el atributo data-params .

Por ejemplo:

link_to "Add to cart", cart_path, 
    data: { method: :post, remote: true, params: { product_id: 123 }.to_param } 

El HTML generado es el siguiente:

<a data-params="product_id=123" data-remote="true" data-method="post" 
    href="/cart" rel="nofollow">Add to cart</a> 

El manejador de jQuery EPU se une todo, desde el atributo data-params al cuerpo solicitud POST.

Conceptualmente no hay mucha diferencia con el uso del asistente de ruta, en primer lugar, pero si desea modificar los parámetros en Javascript, esta solución podría arrojar un código más elegante.

+1

¡Excelente respuesta! Estaba buscando algo como esto. Sabía que el mago de Rails también tendría algo para esto. Dónde encontraste esto ? – Jashwant

+2

No está documentado (al menos no encontré ninguno) pero está en el código. También es una declaración sorprendentemente simple, que proporciona esa característica: https://github.com/rails/jquery-ujs/commit/dad6982dc592686677e6845e681233c40d2ead27 –

+0

Esto es genial. ¡Buen trabajo! para encontrar y compartir – Kocur4d

Cuestiones relacionadas