Ich hatte die gleiche Frage und schrieb einen kleinen Beitrag darüber in meinem Blog
Der Grund ist hier zusammengefasst (ich habe dies in einem Forum gefunden):
* _path sind für Ansichten, da ahrefs implizit mit der aktuellen URL verknüpft sind. Es wäre also eine Verschwendung von Bytes, es immer wieder zu wiederholen. In der Steuerung wird jedoch * _url für redirect_to benötigt, da die HTTP-Spezifikation vorschreibt, dass der Location: -Header in 3xx-Weiterleitungen eine vollständige URL ist.
Hier ist eine weitere Erklärung, die besagt, dass es davon abhängt, ob wir einen absoluten URI verwenden müssen, wenn von einer Nicht-SSL-Site aus eine Verbindung zu einer SSL-Site hergestellt wird, und umgekehrt.
Was ich bisher gelesen habe, deutet nicht darauf hin, dass einer von ihnen sicherer ist als der andere. Es kommt wirklich darauf an, was die "richtige" Verwendung ist.
_url
when displaying the route to outside sources._path
output will work just as well for theLocation
header in a Redirect. The browser will interpret that as a relative-to-root redirect._path
works in controllers.path
ist relativ, währendurl
absolut ist.quelle
Ein Beispiel für den Unterschied für eine Ressource namens "Benutzer":
users_url # => http://localhost:3000/users users_path # => /users
quelle
Same answer as Petros, except that modern browsers handle relative redirects just fine. (I'd comment on his answer, but I can't yet.)
quelle
By secure if you mean not exposing all the data passed, then _path is better as it generates a relative url, something like '/login' but _path would give 'http://localhost:3000/login'. Please refer to this blog post i found sometime back regarding the same. When _url is better than _path
quelle
_url gibt den gesamten Pfad an. Da es den Domainnamen und das Protokoll enthält, können Sie es z. um E-Mails zu senden oder an eine andere Domain weiterzuleiten usw.
_path gibt den Pfad nach '/' ohne Domain, Protokoll usw. zurück. Sie können ihn also ab und zu verwenden (ich denke), wenn Sie keine Details zur Domain benötigen.
quelle
Der
_url
Helfer generiert eine Zeichenfolge, die die gesamte URL enthält, während der_path
Helfer eine Zeichenfolge generiert, die den relativen Pfad aus dem Stammverzeichnis der Anwendung enthält, z.photos_url # => "http://www.example.com/photos" photos_path # => "/photos"
Gemäß Rails Guides - Routing .
quelle