2013-08-31 16 views
15

Sto provando a utilizzare un file audio in binari. Ho creato una cartella audios sotto app\assets\. Vorrei utilizzare i beni di precompilazione in modo che non devo mettere il file con app\publicLe risorse audio in Rails non portano corrispondenze di percorso

In questo momento sto ricevendo

ActionController::RoutingError (No route matches [GET] "/audios/audio_file.wav") 

Se cambio l'URL URL/audios/audio_file.wav-URL/assets/audio_file.wav funziona. Come posso risolvere il problema? Qual è la strada giusta?

risposta

21

In primo luogo, nel caso in cui non lo aveste già realizzato: la vostra nuova cartella app/assets/audios si trova già nel percorso di caricamento ... è sufficiente riavviare il server affinché Sprockets lo raccolga.

Nello sviluppo , le risorse sono disponibili all'URL relativo: /assets/<asset file name>.

Ad esempio, supponendo che il file wav si trovi a /app/assets/audios/audio_file.wav nel file system, sarà accessibile tramite l'url relativo /assets/audio_file.wav nel browser. Questo perché Sprockets/Dev-Rails è in grado di cercare la cartella /app/assets e le sue sottodirectory durante l'individuazione delle risorse.

Nella produzione , la precompilazione delle risorse (in genere) avviene durante l'implementazione. A questo punto, il tuo file wav viene copiato ad es. /public/assets/audio_file-<MD5 fingerprint>.wav ed è accessibile all'URL relativo: /assets/audio_file-<MD5 fingerprint>.wav.

A causa dei diversi stili di denominazione utilizzati tra lo sviluppo e la produzione, ogni volta che si desidera fare riferimento a una risorsa, è necessario farlo utilizzando un metodo di supporto (anche in CSS!). Cioè, la produzione include l'impronta digitale MD5, mentre lo sviluppo no. Ma non dovete preoccuparvi di nulla di tutto ciò fino a quando si utilizza un aiutante:

  • Per le immagini: <%= image_tag('homes/logo.png') %> - dato un file di immagine che vive in /app/assets/images/homes/logo.png sul file system.
  • Per risorse non standard, ad esempio file audio: <%= asset_path('audio_file.wav') %>, che genererebbero un percorso relativo di /assets/audio_file.wav.
Problemi correlati