Rotte specifiche Ruby on Rails deliema
-
27-10-2019 - |
Domanda
Attualmente in fase di sviluppo di un'applicazione web mobile RoR per la visualizzazione di informazioni su luoghi particolari.
Chiamiamo questi luoghi "installazioni". Ogni installazione ha almeno una "sede", che è un'istanza specifica dell'installazione. Quindi, ad esempio, un'installazione potrebbe essere un parco cittadino e uno dei luoghi corrispondenti potrebbe essere il parco durante un concerto o un evento. Se questo esempio è fonte di confusione, ignoralo, non importa molto.
I dati per queste installazioni e le sedi corrispondenti sono ospitati su Amazon Web Service S3 come oggetti json. Uso HTTParty per leggere gli oggetti json di AWS S3. Attualmente li sto leggendo in questo modo:
Nel controller dell'applicazione ho:
inlcude HTTParty
base_uri 's3.amazonaws.com/our_bucket'
before_filter :set_up_httparty
def set_up_httparty
@installation = "INSTALLATION"
@venue = "VENUE"
@dir_url = "/#{@installation}/#{@venue}/"
end
Nei controller corrispondenti, dove ottengo informazioni separate, ho:
response =
ApplicationController.get("#{@dir_url}/ConstantUniqueName.json")
Attualmente sto codificando i valori INSTALLATION e VENUE in modo che puntino a un insieme specifico di cartelle. Funziona benissimo, ma devo essere in grado di prendere questi valori dall'URL in questo modo:
www.themobilewebapp.com/INSTALLATION/VENUE/index
Ora sono sicuro che è molto probabile che passi questi valori con parametri in questo modo:
www.themobilewebapp.com/index?installtion=INSTALLATION&venue=VENUE
Ma se possibile, vorrei impostare il mio URL nel modo precedente. Ho bisogno che gli URL siano facili da inserire per gli utenti e che i codici QRC puntino direttamente a un'installazione specifica e alla sede corrispondente.
Se non è possibile fare qualcosa come www.mobwebapp.com/INSTALL/VEN/index, è possibile impostare sottodomini per ogni sede e poi inserire quella sede come una stringa?
Qualsiasi aiuto è apprezzato !! Grazie!
Soluzione
Se lo inserisci nel tuo file config/routes.rb
, sarai in grado di utilizzare il pattern URL che desideri:
match ':installation/:venue/index', :controller => :venue, :action => :index