Question

Je ne suis pas un développeur Ruby, mais je code HAML un cadre rubis sur mon localhost.

J'avais initialement mis un fichier appelé fichier vidgirlBox2.flv et appelé à lui dans le HAML, mais converti le fichier à un swf appelé vidGirl_home.swf.

Cette swf a travaillé.

Jusqu'à ce que je fait un simple changement au fla orginal et réenregistrés le vidGirl_home.swf.

Il n'a jamais travaillé à nouveau.

J'ai essayé SWFObject, Objet Unobtrusive Flash, le strict minimum de l'intégration d'un swf, tout.

Turns, je reçois ce message dans mon terminal lors de l'exécution de mon serveur local:

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


Rendering rescues/layout (not_found)

Comme vous pouvez le constater, la recherche d'un ancien fichier. Je ne demande pas ce fichier dans l'un de mes haml. Je suis confus quant à la façon dont ce flv lui-même écrit dans le rubis (ce que je suppose au moins).

Ce fut ma tentative de contourner le problème, mais il semble que ce code génère une erreur de compilateur rails. Cela pourrait être juste une simple erreur de convention de nommage. Est-ce que je manque un guillemet quelque part?

Mon nouveau Code d'intégration:

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

Quelqu'un sait ce qui serait arrivé? ou mieux encore, comment résoudre ce problème?

Merci !!

Était-ce utile?

La solution

La dernière fois que j'ai eu ce problème, un film flash a essayé de charger un autre film flash, mais le chemin de base était erronée. Alors austinfromboston peut-être raison, en convertissant le flv à un swf, il intégré votre .flv dans un swf.

Comment contourner ce problème? Assurez-vous que le chemin dans le .swf est releative pas absolut. , Vous devez ensuite définir la BASE param. Voici un exemple avec swobject et 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}, {});"

Le chemin /swf/flashmovie.swf signifie qu'il y a un SWF de dossier dans le dossier public.

Autres conseils

Je ne suis pas super Flash avertis, mais il semble que lorsque vous avez converti le fichier à un swf, il fondamentalement intégré votre fichier vidgirlBox2.flv avant comme une ressource. Je pense que la ressource utilisée pour vivre sur votre bureau, alors quand vous avez modifié votre fichier fla le chemin local obtenu enregistré dans la ressource en quelque sorte. L'erreur que vous voyez serait alors due à un mauvais chemin de ressource étant appelé à partir du fichier flash lui-même, pas des appels que vous faites dans votre balisage haml, qui ont l'air très bien.

Il semble que le code embed que vous utilisez tente d'accéder au fichier via un chemin d'accès local (à savoir le chemin sur votre ordinateur).

Je ne sais pas si cela est une application Rails (ou un autre cadre Ruby), mais vous aurez besoin de faire le fichier .flv / .swf est au même endroit que d'autres fichiers statiques.

Pour les applications Rails, ce serait dans le dossier public /. Je fais des Rails + applications Flash et en général je mets les fichiers dans un partenariat public / flash /.

Une autre option est de mettre le fichier .swf / flv sur un compte S3 et l'accès via l'URL S3 directe. C'est agréable pour les fichiers vidéo plus car il permet d'économiser de la bande passante.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top