Rileva l'URL di base nel controller? [chiuso]
Come possiamo rilevare l'URL radice / base nel controller?
Sto eseguendo una funzione che deve sapere dove restituire l'utente al termine e vorrei che funzionasse in dev e prod. Al momento, se utilizzo semplicemente il nome di dominio, in fase di sviluppo restituisce l'utente al sito Web effettivo (ad es. Www.example.com/reauth , anziché http: // localhost: 3000), il che non è desiderabile (in dev , l'utente dovrebbe essere restituito a dev; non dovrebbero essere collegati alla versione prod del sito).
Quindi voglio un codice che restituisca:
https://www.example.comin produzione ehttp://localhost:3000in via di sviluppo
Esempio
Ecco una versione semplificata dell'esempio esatto di cui ho bisogno per refresh_urlimpostare il valore su :
https://www.example.com/reauthin produzione e,localhost:3000/reauthin via di sviluppo
Nota la cosa fondamentale qui è che l'ultima parte dell'URL è la stessa, ma la prima parte (URL di base) è il dominio effettivo in produzione e localhost in sviluppo.
Stripe::AccountLink.create({
refresh_url: 'https://www.example.com/reauth'
})
Quello che so finora
Ho guardato:
- come rilevare l'URL di base nel modello (e nella vista ), nonché
- come ottenere l'URL di base (che restituisce
NameError: undefined local variable or method 'request' for main:Object)
Risposte
Ho scoperto che il metodo qui funziona.
cioè
request.base_url
Appunti:
- questo restituirà l'URL senza una barra in avanti finale.
- questo non funzionerà nella console di rails
Per riferimento futuro, ecco cosa ha risolto per me fornire l'URL di base corretto a seconda che l'app venga eseguita in dev o prod:
base_url = (!Rails.const_defined? 'Console') ? (request.base_url) : "http://localhost:3000"