Percorsi denominati _path vs _url


109

Rails fornisce rotte con nome .

L'helper dei percorsi può essere chiamato utilizzando il percorso o l'URL

ad es. dai documenti:

# and provide these named routes
root_url   # => 'http://www.example.com/'
root_path  # => '/'

francamente parlando non ho mai usato l' *_urlhelper, sono riuscito a far funzionare le cose usando *_path.

Ero un po 'confuso qual è lo scopo di questi due diversi aiutanti?

come sono diversi l'uno dall'altro?

alcuni esempi reali con spiegazioni su quando usare ciò che sarebbe fantastico.

Risposte:


156

_pathgli helper forniscono un percorso relativo alla radice del sito. Probabilmente dovresti usarlo la maggior parte del tempo.

_urlgli helper forniscono un percorso assoluto, incluso il protocollo e il nome del server. Ho scoperto che li utilizzo principalmente nelle e-mail quando creo collegamenti all'app sul server. Dovrebbero essere utilizzati principalmente quando si forniscono collegamenti per uso esterno. (Pensa a link email, RSS e cose come il campo URL copia e incolla nella sezione "Condividi" di un video di YouTube.)


entrambe le risposte sono quasi simili, ma ti do la risposta corretta per questo esempio "copia e incolla il campo URL nella sezione" Condividi "di un video di YouTube" e già +1 per @mori :)
Jain

Grazie. Sto creando una soluzione DAM in cui è presente un campo copia / incolla "Condividi URL" simile a quello che fa YouTube. È stata una delle prime cose che mi sono venute in mente.
Chris Peters

13

Quando inserisci un collegamento nel tuo sito, la parte del dominio del percorso è ridondante e si aggiunge alla dimensione della pagina, quindi puoi semplicemente utilizzare la parte del percorso dell'URL con l' *_pathhelper. D'altra parte, se l'URL deve essere utilizzato al di fuori del tuo sito, ad esempio un'e-mail o un feed RSS, è necessario l'intero URL, quindi usa l' *_urlhelper.


Recentemente ho avuto un problema con i collegamenti e il dominio e l'helper _url era il mio unico mezzo per ottenere collegamenti utilizzando il dominio corretto e non collegamenti "relativi all'hosting".
Pierre-Adrien Buisson

1
Uso anche l'helper _url quando ho alcuni sottodomini nell'app. Ad esempio, quando sono su abc.example.com _path reindirizzerà a abc.example.com/somesection quando _url reindirizzerà correttamente a example.com/somesection
Wordica

10

Come spiegano le altre risposte, dovresti usare _urlnei collegamenti e-mail, ecc. Ma vorrei aggiungere che dovresti usare anche _urlnei reindirizzamenti, come spiegato qui:

https://www.ruby-forum.com/topic/101346#221052

e qui:

http://viget.com/extend/rails-named-routes-path-vs-url

Puoi anche dare un'occhiata alla sezione pertinente della specifica HTTP qui:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.30


1
Citando il primo collegamento (nel caso in cui scompaia): "Nel controller, però, * _url è necessario per redirect_to perché la specifica HTTP impone che l'intestazione Location: nei reindirizzamenti 3xx sia un URL completo."
Terrabits

2

_path fornisce il percorso relativo.

_url fornisce il percorso assoluto.

Ogni volta che si invia un URL tramite posta elettronica, ecc. È consigliabile utilizzare _url invece di _path.


Downvoting perché questo è esattamente ciò a cui Chris Peters aveva già risposto più di due anni prima di questa risposta. Le risposte ridondanti non sono utili.
jeffdill2
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.