RubyonRailsで奇妙なバグに遭遇しました。フラッシュオブジェクトを使用して複数のアップロードを処理するためにUploadifyJQueryライブラリを実装しようとしています。この機能は、Ajaxがロードされているタブに実装しています。以前は、Uploadifyの影響を受ける関連HTMLと同じajaxページにUploadifyjsファイルのjavascript_include_tagがありました。でも、これはいくつかの非常に奇妙な結果を生み出しました。そのページのUploadify関数の呼び出しが機能する場合もあれば、完全に失敗する場合もあります。タブを切り替えてAjaxページを2回目または3回取得しても機能しなかった場合は、通常、問題が修正されました。奇妙なことに、Firebugを使用してHTMLを検査した場合、ファイルのネットワーク要求は表示されましたが、Javascript機能が機能している場合でもjavascriptリンクは表示されませんでした。uploadifyのjavascript_include_tagをアプリケーションレイアウトのheadタグに移動しようとしましたが、Uploadifyflatoutが完全に機能しなくなりました。
Ajaxページのリンクタグを使用してuploadify機能を本番サーバーにプッシュしたとき、問題は依然として存在していましたが、それほど頻繁ではありませんでした。実際、私はそれに気づいたのは数回だけでした。また、この機能はFirefoxだけでなく、他のブラウザ期間では機能しなくなりますが、これはまったく別の問題である可能性があります(Javascriptはブラウザに依存しないはずですが...)。
uploadify呼び出しを含めようとしたときのヘッドタグは次のようになりました。
%head
%title Virtual Robot Games
= stylesheet_link_tag 'style.css','web_app_theme.css', 'events.css', :media => 'screen'
= csrf_meta_tag
= javascript_include_tag 'jquery'
= javascript_include_tag 'prototype'
= javascript_include_tag 'noconflict.js'
= javascript_include_tag 'effects.js'
= javascript_include_tag 'calendar_date_select'
= javascript_include_tag 'highlight'
= javascript_include_tag 'textcounter'
= javascript_include_tag 'scriptaculous.js'
= javascript_include_tag 'collapsible.js'
= javascript_include_tag 'bbhelp.js'
= javascript_include_tag 'swfobject'
= javascript_include_tag 'application'
= javascript_include_tag 'uploadify'
追加情報:
私はPrototypeとJQueryの両方を使用しており、それらは常に互いに競合していますが、通常はこれを回避できます。2つのライブラリが競合しているシナリオは一度もありませんでしたし、たまにしか機能しないJQueryもありました。通常、競合がある場合、それはまったく機能しません。
編集 実際、私は問題を理解したと思います。私はjquery-rails gemを使用していて、UploadifyjsファイルにJQueryライブラリを含めるのを忘れていました。代わりに、googleapiへのインラインリンクがありました。google apiリンクをincludes呼び出しに置き換えると、問題が修正されました。私の元の質問は立っていますが、JavaScriptリンクをすべてheadタグに保存する必要がありますか?