Lorsque nous définissons des itinéraires dans routes.rb en utilisant le nom tel que map.some_link, nous pouvons utiliser le lien de deux manières différentes: some_link_url () some_link_path. Quelles sont les différences entre les deux? Qu'est-ce qui est le plus sûr à utiliser?
Réponses
Trop de publicités?J'ai eu la même question et j'ai écrit un petit post à ce sujet dans mon blog
La raison en est résumée ici (j'ai trouvé ceci sur un forum):
*_path sont pour les vues parce que ahrefs sont implicitement liés à l'URL courante. De sorte qu'il serait un gaspillage d'octets de les répéter plus et plus. Dans le contrôleur, si, *_url est nécessaire pour redirect_to parce que la spécification HTTP mandats que l'en-tête location: dans 3xx redirige est une URL complète.
Voici une autre explication qui dit cela dépend si nous avons besoin d'utiliser un URI absolu lors de la liaison à un site SSL à partir d'un non-SSL site, et vice versa.
Ce que j'ai lu jusqu'à présent, n'est-ce pas suggérer que l'un d'eux est plus sécurisé que les autres. Il vient vraiment à ce qu'est la "bonne utilisation".
Même réponse que Petros, sauf que les navigateurs modernes gèrent très bien les redirections relatives . (Je voudrais commenter sa réponse, mais je ne peux pas encore.)
Par secure si vous voulez dire de ne pas exposer toutes les données transmises, alors _path est préférable car il génère une URL relative, quelque chose comme "/ login" mais _path donnerait "http: // localhost: 3000 / login". Veuillez vous référer à ce billet de blog que j'ai trouvé à un moment donné concernant la même chose. Quand _url est meilleur que _path