Bei der Untersuchung des Nutzungsunterschieds zwischen dem Pfad-Helfer und dem URL-Helfer ** ”Pfad-Helfer gibt relativen Pfad zurück, URL-Helfer gibt absoluten Pfad zurück” **
Ich fühlte mich mit dieser Notation unwohl und versuchte nachzuforschen
Wenn der folgende vollständige Pfad (vollständiger Pfad), der das Verzeichnis my_room angibt, vorhanden ist
/my_city/my_home/my_room/i_am_here.html.erb
Pfad (Route) von /
aus gesehen (root: Verzeichnis der obersten Ebene)
Vor der Notation steht ** immer /
(root) **
/my_city/my_home/my_room/i_am_here.html.erb #Ich habe von der Wurzel gesehen_am_here.html.erb Pfadnotation
Pfad gesehen von wo du bist
Die Notation enthält am Anfang nicht ** /
(root) **
my_home/my_room/i_am_here.html.erb # my_Ich habe aus der Stadt gesehen_am_here.html.erb Pfadnotation
my_room/i_am_here.html.erb # my_Ich habe von zu Hause aus gesehen_am_here.html.erb Pfadnotation
../i_am_here.html.erb # i_am_here.html.mein wie von erb aus gesehen_Home-Pfad-Notation
Sie können einfach so denken
/
Bisher gibt es zwei Notationen, die verdeckt wurden.
Bei der Beschreibung des Routings
Während im Rails-Tutorial /
(root) hinzugefügt wird
In Progate wurde es ohne /
(root) geschrieben (obwohl /
in link_to
usw. angehängt ist)
Das ist leicht zu verstehen
Auch wenn Sie das Routing im Progate-Ausdruck ohne /
beschreiben
get 'help', to: 'static_pages#help' # help -> /Das Ausführungsergebnis ist auch mit Hilfe das gleiche
get 'about', to: 'static_pages#about'
.
.
.
Wenn Sie das tatsächliche Routing überprüfen
Sie können sehen, dass /
(root) abgeschlossen ist
$ rails routes
Prefix Verb URI Pattern Controller#Action
root GET / static_pages#home
help GET /help(.:format) static_pages#help
about GET /about(.:format) static_pages#about
.
.
.
** Beide Notationen sind in Ordnung, da Rails sie selbst ergänzen.
Das Ergebnis der internen Verarbeitung sieht aus wie ein absoluter Pfad basierend auf /
**
Außerdem der Pfad-Helfer, der im Rails-Tutorial behandelt wird. Der Typ, den diese Ressource bringt
Wenn Sie sich auf Folgendes beziehen
Ähnlich wie bei der Routing-Beschreibung
Ist der Pfadhelfer ein absoluter Pfad, der auf ** /
basiert? Scheint zurückzukehren **
2.3 Pfad- und URL-Helfer Durch das Erstellen eines einfallsreichen Routings stehen den Controllern Ihrer Anwendung viele Helfer zur Verfügung. Nehmen Sie die Routing-Ressourcen: Fotos als Beispiel.
photos_path gibt / photos zurück new_photo_path gibt / photos / new zurück edit_photo_path (: id) gibt / photos /: id / edit zurück (edit_photo_path (10) gibt / photos / 10 / edit zurück) photo_path (: id) gibt / photos /: id zurück. (Wenn photo_path (10), wird / photos / 10 zurückgegeben) Jeder dieser _path-Helfer verfügt über einen entsprechenden _url-Helfer (z. B. photos_url). ** Der _url-Helfer unterscheidet sich darin, dass der aktuelle Hostname, die Portnummer und das Pfadpräfix _path vorangestellt werden. ** ** **
Ist der von Rails behandelte Pfad ein absoluter Pfad? Ist es ein relativer Weg? Im Denken Die folgenden Websites waren hilfreich
Mit anderen Worten, der Pfad / ...
, den Rails verarbeitet, ist
** Relativer Routenpfad **, wie ein absoluter Pfad basierend auf dem Routenpfad (relative, virtuelle? Route) **
Ich habe verstanden
Da wird der Übergang von der Entwicklungsumgebung zur Produktionsumgebung erwartet (Im ersten Beispiel wurde entschieden, dass das Ausgangsverzeichnis in ein anderes Stadtverzeichnis verschoben wird.) Es ist keine gute Idee, die vollständige Pfadnotation in der Entwicklungsumgebung zu verwenden Und um die Anfälligkeit relativer Pfade für strukturelle Veränderungen zu vermeiden Der relative Wurzelpfad wäre praktisch
Wenn Sie sich erneut auf die obige Rails-Anleitung beziehen
Während der Pfadhelfer einen relativen Wurzelpfad zurückgibt Der URL-Helfer befindet sich in der Umgebung, in der er platziert ist (in der Produktionsumgebung hängt er vom Server in der Produktionsumgebung ab). ** Wahrscheinlich den vollen Weg bekommen und zurückgeben **
Reference:
Richtige Verwendung der Pfadmethode und der _url-Methode --Qiita