0

私は決して Ruby 開発者ではありませんが、自分のローカルホストで Ruby フレームワークの HAML をコーディングしています。

もともと vidgirlBox2.flv ファイルというファイルを配置して HAML 内で呼び出していましたが、そのファイルを vidGirl_home.swf という swf に変換しました。

このswfは機能しました。

元の .fla に簡単な変更を加え、 vidGirl_home.swf を上書きするまで。

二度と機能しませんでした。

swfObject、控えめな Flash オブジェクト、最低限の swf 埋め込みなど、すべてを試しました。

結局のところ、ローカルサーバーを実行しているときに、ターミナルに次のメッセージが表示されます。

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


Rendering rescues/layout (not_found)

ご覧のとおり、古いファイルを探しています。私は自分のhamlでこのファイルを呼び出していません。この flv が自分自身をルビーにどのように書き込んだかについて、私は混乱しています (これは少なくとも私が想定していることです)。

これは私の回避策の試みでしたが、このコードは Rails コンパイラ エラーを生成するようです。これは単純な命名規則のエラーである可能性があります。どこかに引用符がありませんか?

私の新しい埋め込みコード:

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

何が起こったのか知っている人はいますか?またはさらに良いことに、これを修正する方法は?

ありがとうございました!!

4

3 に答える 3

1

私はFlashに精通していませんが、ファイルをswfに変換すると、基本的に以前のvidgirlBox2.flvファイルがリソースとして埋め込まれたように見えます。私の推測では、リソースはデスクトップ上に存在していたため、flaファイルを編集すると、ローカルパスが何らかの方法でリソースに保存されました。表示されているエラーは、hamlマークアップで行っている呼び出しからではなく、フラッシュファイル自体から呼び出されている不適切なリソースパスが原因である可能性があります。

于 2009-06-11T07:35:42.967 に答える
0

前回この問題が発生したとき、あるフラッシュムービーが別のフラッシュムービーを読み込もうとしていましたが、ベースパスが間違っていました。したがって、austinfrombostonは正しいかもしれません。flvをswfに変換することで、.flvをswfに埋め込みます。

これを回避する方法は?.swfのパスが絶対的ではなく相対的であることを確認してください。次に、BASEパラメータを設定する必要があります。swobjectと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}, {});"

パス/swf/flashmovie.swfは、パブリックフォルダーにフォルダーswfがあることを意味します。

于 2009-06-11T11:12:58.770 に答える
0

使用している埋め込みコードが、ローカル パス (つまり、コンピューター上のパス) 経由でファイルにアクセスしようとしているようです。

これが Rails アプリ (または別の Ruby フレームワーク) であるかどうかはわかりませんが、.flv/.swf ファイルを他の静的ファイルと同じ場所に配置する必要があります。

Rails アプリの場合、これは public/ フォルダー内にあります。私はいくつかの Rails+Flash アプリケーションを実行しており、通常はファイルを public/flash/ ディレクトリに配置しています。

もう 1 つのオプションは、.swf/.flv ファイルを S3 アカウントに配置し、S3 の直接 URL を介してアクセスすることです。これは、帯域幅を節約できるため、大きなビデオ ファイルに適しています。

于 2009-06-10T22:22:48.037 に答える