J'ai du mal à ajouter des paramètres de chaîne de requête à link_to UrlHelper. J'ai une vue Index, par exemple, qui a des éléments d'interface utilisateur pour le tri, le filtrage et la pagination (via will_paginate). Le plugin will_paginate gère correctement la persistance intra-page des paramètres de la chaîne de requête.
Existe-t-il un mécanisme automatique pour ajouter les paramètres de chaîne de requête à une route nommée donnée, ou dois-je le faire manuellement? De nombreuses recherches sur cette construction apparemment simple m'ont laissé sans aucune idée.
Éditer
Quelques défis:
Si j'ai deux paramètres de chaîne de requête, compartiment et tri, comment définir une valeur spécifique pour l'un d'eux dans un link_to, tout en préservant la valeur actuelle de l'autre? Par exemple:
<%= link_to "0", profiles_path(:bucket => '0', :sorting=>?? ) %>
Si j'ai plusieurs paramètres de chaîne de requête, bucket & sorting & page_size, et que je souhaite définir la valeur sur l'un d'entre eux, existe-t-il un moyen d'inclure "automatiquement" les noms et les valeurs des paramètres restants? Par exemple:
<%= link_to "0", profiles_path(:bucket => '0', [include sorting and page_size name/values here] ) %>
Le plugin will_paginate gère automatiquement sa variable de page et d'autres variables de chaîne de requête. Il ne semble pas y avoir d'élément d'interface utilisateur automatique pour gérer la taille de la page. Bien que j'ai vu du code pour créer une liste de tailles de page, je préfère avoir des éléments A pour cela (comme SO). Une partie de ce défi est liée à # 2, une partie est liée au masquage / affichage de cet élément d'interface utilisateur basé sur l'existence / la non-existence d'enregistrements. Autrement dit, je ne veux inclure des liens de taille de page que s'il y a des enregistrements sur la page. De plus, je préfère inclure automatiquement les autres variables QS (c'est-à-dire la page, le bucket, le tri), plutôt que de les inclure par nom dans le link_to.
Réponses:
Les documents de l'API sur link_to montrent quelques exemples d'ajout de chaînes de requête aux routes nommées et anciennes. c'est ce que tu veux?
link_to
peut également produire des liens avec des ancres ou des chaînes de requête:la source
Si vous voulez une méthode rapide et sale et ne vous inquiétez pas des attaques XSS, utilisez
params.merge
pour conserver les paramètres précédents. par exemplevoir: https://stackoverflow.com/a/4174493/445908
Sinon, vérifiez cette réponse: params.merge et cross site scripting
la source
Si vous souhaitez conserver les paramètres existants et ne pas vous exposer aux attaques XSS, assurez-vous de nettoyer le hachage des paramètres, en ne laissant que les paramètres que votre application peut envoyer:
Si vous l'utilisez à plusieurs endroits, nettoyez les paramètres du contrôleur:
la source
Dans le cas où vous souhaitez passer dans un bloc, disons, pour un bouton glyphicon, comme dans le texte suivant:
Ensuite, le passage des paramètres des chaînes de requête peut être accompli par:
la source