2009-06-10 9 views
0

Ich bin keineswegs ein Ruby-Entwickler, aber ich Code HAML für ein Ruby-Framework auf meinem localhost.meine Rails ApplicationController hat einen RoutingError

Ich hatte ursprünglich eine Datei namens vidgirlBox2.flv Datei und rief es in der HAML, aber konvertierte die Datei in eine swf namens VidGirl_home.swf.

Dieser swf funktionierte.

Bis ich eine einfache Änderung an der ursprünglichen .fla, und überschrieb die vidGirl_home.swf.

Es hat nie wieder funktioniert.

Ich versuchte swfObject, Unobtrusive Flash-Objekt, das Minimum der Einbettung eines swf, alles.

Es stellte sich heraus, ich diese Meldung in meinem Terminal erhalten, wenn mein lokalen Server ausgeführt wird:

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


Rendering rescues/layout (not_found) 

Wie Sie sehen können, sein für eine alte Datei suchen. Ich rufe diese Datei in keinem meiner haml an. Ich bin verwirrt darüber, wie sich dieses FLV in den Rubin eingeschrieben hat (zumindest nehme ich das an).

Dies war mein Versuch einer Problemumgehung, aber es scheint, dass dieser Code einen Rails-Compiler-Fehler generiert. Dies könnte nur ein einfacher Namenskonventionfehler sein. Fehle ich irgendwo ein Anführungszeichen?

My New Embed Code:

 - 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/', {});" 

Wer weiß, was passiert sein könnte? oder besser noch, wie das zu beheben?

Vielen Dank !!

Antwort

0

Das letzte Mal, als ich dieses Problem hatte, versuchte ein Flash-Film einen anderen Flash-Film zu laden, aber der Basispfad war falsch. So könnte austinfromboston recht haben, indem er das flv in ein swf umwandelt, hat es deine .flv in ein swf eingebettet.

Wie umgehen Sie das? Stellen Sie sicher, dass der Pfad in der .swf nicht relatativ ist. Dann müssen Sie den BASE-Parameter festlegen.Hier ist ein Beispiel mit swobject und 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}, {});" 

Der Weg /swf/flashmovie.swf bedeutet, dass es ein Ordner swf im öffentlichen Ordner.

+0

Ihr Code erzeugt einen Compilerfehler. Ich habe geschrieben, was ich oben in meiner ursprünglichen Frage geschrieben habe. – Trip

+0

Ich denke du meinst einen haml Kompilierfehler, oder? Welcher Fehler wäre das? – Kafka

0

Es sieht so aus, als ob der von Ihnen verwendete Einbettungscode versucht, über einen lokalen Pfad (d. H. Den Pfad auf Ihrem Computer) auf die Datei zuzugreifen.

Ich bin mir nicht sicher, ob dies eine Rails-App (oder ein anderes Ruby-Framework) ist, aber Sie müssen die .flv/.swf-Datei an der gleichen Stelle wie andere statische Dateien ablegen.

Für Rails-Anwendungen würde dies im öffentlichen/Ordner sein. Ich mache einige Rails + Flash-Apps und lege die Dateien im Allgemeinen in ein public/flash/-Verzeichnis.

Eine andere Möglichkeit ist, die .swf/.flv-Datei auf ein S3-Konto zu legen und über die direkte S3-URL darauf zuzugreifen. Dies ist bei größeren Videodateien hilfreich, da dadurch Bandbreite eingespart wird.

+0

Ich habe das Set Ich versuche, in der Öffentlichkeit, aber kein Glück zu zeichnen. Ich vermute, es gibt ein paar Probleme hier. – Trip

+0

Können Sie Ihren Embed/SWFobject-Code hier einfügen? – Callmeed

+0

% Objekt {: width => "550",: Höhe => "400"} % param {: name => "Film",: Wert => "/ images/vidGirl_home.swf"} % einbetten {: src => "/ images/vidGirl_home.swf",: width => "550" height = "400"} – Trip

1

Ich bin nicht super Flash-savvy, aber es sieht aus wie wenn Sie die Datei zu einem SWF konvertiert, es im Grunde eingebettet Ihre vorherige vidgirlBox2.flv Datei als Ressource. Meine Vermutung ist, dass die Ressource früher auf Ihrem Desktop gelandet war. Als Sie Ihre fla-Datei bearbeitet haben, wurde der lokale Pfad irgendwie in die Ressource gespeichert. Der Fehler, den Sie sehen, wäre dann auf einen fehlerhaften Ressourcenpfad zurückzuführen, der von der Flash-Datei selbst aufgerufen wird, nicht von den Aufrufen, die Sie in Ihrem haml-Markup tätigen, die gut aussehen.

+0

Wow, das ist sehr interessant. Du hast recht, die .flv war auf meinem Desktop. Die SWF-Datei ist jedoch nur ein Film, und das einzige ActionScript ist ein Ereignis-Listener der Filmvervollständigung, um es in Schleife zu lassen. Aber von dem, was ich vermute, ist, dass es es in etwas tiefer als das gespeichert haben könnte. Ich nehme an, dass die Arbeit um die Ressource von Grund auf neu zu erstellen ist. Aber wenn ich einen anderen Ball nach links und rechts bewegen würde, würde das auch nicht funktionieren. – Trip