73 votes

Quelle est la différence entre _url et _path lors de l’utilisation des itinéraires en rails

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?

90voto

Petros Points 4430

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".

90voto

ponzao Points 7907

path est relatif alors que url est absolu.

42voto

Jason Points 1435

Un exemple de différence pour une ressource appelée "utilisateur":

 users_url # => http://localhost:3000/users
users_path  # => /users
 

2voto

Ian Lotinsky Points 2691

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.)

1voto

Alok Swain Points 2240

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X