2010-12-07 7 views

Répondre

34

Vous pouvez transmettre des paramètres de la fonction de chemin dans le cadre de l'URL. Quelque chose comme:

<%= 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 

Mais je pense que vous avez besoin de se déplacer loin de l'aide de chemin ressources purement dans ce cas. Vérifiez le documentation pour des idées.

24

Si vous ne voulez pas mettre les paramètres dans l'assistant de chemin - peut-être parce qu'il ya beaucoup d'entre eux ou vous ne les connaissez pas lorsque la page est générée - vous pouvez également les mettre dans l'attribut data-params .

Par exemple:

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

Le code HTML généré ressemble à ceci:

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

Le gestionnaire JQuery UJS attache tout de l'attribut data-params au corps de la requête POST.

Conceptuellement il n'y a pas beaucoup de différence à l'aide de l'assistant de chemin en premier lieu, mais si vous souhaitez modifier les paramètres en Javascript cette solution pourrait donner un code plus élégant.

+1

Grande réponse! Je cherchais quelque chose comme ça. Je savais que le magicien de Rails aurait quelque chose pour ça aussi. Où as tu trouvé ça ? – Jashwant

+2

Il n'est pas documenté (au moins je n'en ai trouvé aucun) mais c'est dans le code. En outre, il est une déclaration simple, étonnamment, qui fournit cette fonctionnalité: https://github.com/rails/jquery-ujs/commit/dad6982dc592686677e6845e681233c40d2ead27 –

+0

Ceci est une grande étoffe. Bon travail! pour trouver et partager. – Kocur4d

Questions connexes