Domanda

Non sono affatto uno sviluppatore Ruby, ma codifico HAML per un framework Ruby sul mio localhost.

Inizialmente avevo inserito un file chiamato file vidgirlBox2.flv e lo avevo richiamato all'interno dell'HAML, ma ho convertito il file in un file swf chiamato vidGirl_home.swf .

Questo swf ha funzionato.

Fino a quando non ho apportato una semplice modifica al file .fla originale e ho sovrascritto vidGirl_home.swf .

Non ha mai più funzionato.

Ho provato swfObject, Discreto Flash Object, il minimo indispensabile per incorporare un swf, tutto.

Risulta che ricevo questo messaggio nel mio terminale quando eseguo il mio server locale:

ActionController::RoutingError (No route matches "/Users/daniellevine/Desktop/vidgirlBox2.flv" with {:method=>:get}):


Rendering rescues/layout (not_found)

Come puoi vedere, sta cercando un vecchio file.Non chiamerò questo file in nessuno dei miei haml.Sono confuso su come questo flv si sia scritto nel ruby ​​(questo è quello che presumo almeno).

Questo è stato il mio tentativo di soluzione alternativa, ma sembra che questo codice generi un errore del compilatore rails.Potrebbe trattarsi semplicemente di un semplice errore di convenzione di denominazione.Mi manca una virgoletta da qualche parte?

Il mio nuovo codice di incorporamento:

      - if Rails.env.development?
      = javascript_include_tag "swfobject"
      - else
      %script{:src => "http://ajax.googleapis.com/ajax/libs/swfobject/2.1/swfobject.js"}
      - id ||= "flash"
      - filename ||= "/images/vidGirl/vidGirl_home.swf"
      - width ||= 440
      - height ||= 247
      - background ||= "#ffffff"
      - version ||= 9
      - base ||= '{base: "."}'

      %div{ :id => id }
        %strong You need to upgrade your Flash Player

      = javascript_tag "swfobject.embedSWF('/images/vidGirl/vidGirl_home.swf', 'vidGirl_home', '440', '247', '9.0.0', '/javascripts/swfobject/expressInstall.swf', {}, '/public/', {});"

Qualcuno sa cosa potrebbe essere successo?o meglio ancora, come risolvere questo problema?

Grazie!!

È stato utile?

Soluzione

L'ultima volta che ho riscontrato questo problema, un filmato Flash tentava di caricare un altro filmato Flash ma il percorso di base era sbagliato.Quindi AustinfromBoston potrebbe avere ragione: convertendo il flv in un swf, ha incorporato il tuo .flv in un swf.

Come aggirare questo problema?Assicurati che il percorso nel file .swf sia relativo e non assoluto.Quindi è necessario impostare il parametro BASE.Ecco un esempio con swobject e HAML:

- if Rails.env.development?
= javascript_include_tag "swfobject"
- else
%script{:src => "http://ajax.googleapis.com/ajax/libs/swfobject/2.1/swfobject.js"}
- id ||= "flash"
- filename ||= "/swf/flashmovie.swf"
- width ||= 990
- height ||= 500
- background ||= "#ffffff"
- version ||= 9
- base ||= '{base: "."}'

%div{ :id => id }
  %strong You need to upgrade your Flash Player

= javascript_tag "swfobject.embedSWF('#{filename}', '#{id}', '#{width}', '#{height}', '#{version}', '/swf/express_Install.swf', {}, #{base}, {});"

Il percorso /swf/flashmovie.swf significa che c'è una cartella swf nella cartella pubblica.

Altri suggerimenti

Non sono molto esperto di Flash, ma sembra che quando hai convertito il file in swf, sostanzialmente abbia incorporato il tuo file vidgirlBox2.flv precedente come risorsa.La mia ipotesi è che quella risorsa vivesse sul tuo desktop, quindi quando hai modificato il tuo file fla il percorso locale è stato salvato in qualche modo nella risorsa.L'errore che vedi sarebbe quindi dovuto a un percorso di risorsa errato chiamato dall'interno del file flash stesso, non dalle chiamate che stai effettuando nel tuo markup haml, che sembrano a posto.

Sembra che il codice di incorporamento che stai utilizzando stia tentando di accedere al file tramite un percorso locale (ad es.il percorso sul tuo computer).

Non sono sicuro che si tratti di un'app Rails (o di un altro framework Ruby), ma dovrai fare in modo che il file .flv/.swf si trovi nello stesso posto degli altri file statici.

Per le app Rails, questo dovrebbe trovarsi all'interno della cartella public/.Realizzo alcune app Rails+Flash e generalmente inserisco i file in una directory public/flash/.

Un'altra opzione è inserire il file .swf/.flv in un account S3 e accedervi tramite l'URL S3 diretto.Questo è utile per i file video più grandi poiché consente di risparmiare sulla larghezza di banda.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top