RoutingErrorを持っているApplicationControllerに私のレール
-
13-09-2019 - |
質問
私は決してRubyの開発者ですが、私は私のローカルホスト上のRubyフレームワークのためのHAMLをコーディングします。
私はもともとvidgirlBox2.flvファイルと呼ばれるファイルを入れて、HAML以内にそれに呼ばれるが、vidGirl_home.swfと呼ばれるswfファイルにファイルを変換していました。
このSWFが働いています。
私はorginal .FLAに簡単な変更を行い、vidGirl_home.swfを上書きしました。まで
これは、再び働いたことはありません。
私は控えめなFlashオブジェクト、swfファイルを埋め込む最低限、すべてのもの、swfObjectを試します。
が判明私のローカルサーバーを実行しているとき、私は自分の端末でこのメッセージが表示されます:
ActionController::RoutingError (No route matches "/Users/daniellevine/Desktop/vidgirlBox2.flv" with {:method=>:get}):
Rendering rescues/layout (not_found)
あなたはその古いファイルを探して、言うことができるように。私は私のHAMLのいずれかでこのファイルを呼び出していませんよ。私は、このFLVは(これは私が少なくとも前提とするものである)ルビーに自分自身を書いた方法として混乱しています。
この回避策で私の試みだったが、このコードは、レールのコンパイラエラーを生成しているようです。これは、単純な命名規則のエラーの可能性があります。私はどこかに引用符足りない?
私の新しい埋め込みコードます:
- 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/', {});"
誰もが起こっているかもしれないものを知っていますか?またはより良いまだ、どのようにこの問題を解決するには?
ありがとう!!
解決
私はこの問題を持っていた最後の時間は、一つのフラッシュムービーは、他のFlashムービーをロードしようとしていたが、ベースパスが間違っていました。 swfファイルにFLVを変換することによって、正しいかもしれないのでaustinfromboston、それはswfファイルにあなたのFLVを組み込みます。
どのようにこの問題を回避するには? .swfファイル内のパスがないアブソルートreleativeであることを確認してください。その後、あなたはBASEのPARAMを設定する必要があります。ここで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が存在することを意味/swf/flashmovie.swf パスます。
他のヒント
私はスーパーのFlashに精通していないんだけど、あなたはswfファイルにファイルを変換するとき、それは基本的にリソースとしてあなたの前vidgirlBox2.flvファイルを埋め込まれたように見えます。私の推測では、デスクトップ上に生きるためにそのリソース使用されているので、あなたは、FLAファイルを編集したときに、ローカルパスは何とかリソースに保存されてしまいました。あなたが見ているエラーは、原因フラッシュファイル自体の中から、罰金見て、あなたのHAMLマークアップになっているコールから呼び出されて、悪いリソースパスになります。
それはあなたのローカルパス(コンピュータ上すなわちパス)を介してファイルにアクセスしようとしている使用している埋め込みコードのように見えます。
これはRailsのアプリ(または他のRubyのフレームワーク)であれば、私はよく分からないが、あなたがのFLV / .swfファイルは、他の静的ファイルと同じ場所にあることを確認する必要があります。
のRailsアプリケーションの場合、これは、パブリック/フォルダ内になります。私はいくつかのRails +のFlashアプリケーションを実行すると、私は一般公開/フラッシュ/ディレクトリにファイルを置きます。
別のオプションは、直接S3 URLを経由してS3のアカウントとアクセスそれをswfファイル/のFLVファイルを置くことです。それは、帯域幅を節約ので、これは大きなビデオファイルのための素晴らしいです。