0

ローカルストレージとjqueryuiを使用するバックボーン/Railsアプリがあります。1つのRails3.2.8アプリケーションで開発し、動作させてから、サーバーで使用するアプリケーション(Rails 3.2.8も)にコードをコピーしましたが、サーバーにプッシュする前に、ローカルホスト。不思議なことに、サーバー宛てのRailsアプリでは機能しません。たった1つのjQueryuiメソッドが新しいアプリで問題を引き起こし、このエラーをスローします。

Object [object Object] has no method 'sortable' 

以下のrender関数からソート可能なコードをコメントアウトすると、アプリは正常に動作しますjQueryのバージョンは両方のアプリでjQuery uiバージョン(1.9.2)と同じ(1.8)です(バックボーンのバージョンも同じです) )。両方のアプリのページソースを確認しましたが、ファイルは同じ順序で読み込まれています。元のアプリはChromeとFirefoxの両方で動作しますが、1つの工夫として、Safariの両方のアプリケーションで同じエラーが発生します。すべてのブラウザでキャッシュをクリアしました。コードはこれでラップされています$(function(){ });

$(function() {

    ...ommitted code...

       window.App = new AppView();

});

ただし、アプリビューの初期化の周りにドキュメント対応コードを配置しようとしましたが、何も変更されませんでした

$(document).ready(function() {

       window.App = new AppView();
});

上記(および以下のコード)を考えると、どちらもSafariで正しく機能しないという事実はありますが、元のアプリはChromeとFirefoxで機能します(もう一方は機能しません)。前もって感謝します

ソート可能が配置されている場所でのレンダリング機能

 render: function() {
            $(this.el).html(this.template(this.model.toJSON()));
             this.setText();
             var that = this;
             console.log(this.$("ul.bucket-companies"));
             this.$("ul.bucket-companies").sortable({
             dropOnEmpty: true,
             connectWith: "ul.bucket-companies",
             receive: function(event, ui) {
              var bucket = that.model;
              var id = $(ui.item[0]).attr("id");
              var company = Companies.get(id);
              var oldBucket = company.getBucket();

             company.setBucket(bucket.id);
             oldBucket.removeCompany(company.id);
             bucket.addCompany(company.id);
            }
           });
              return this;
            },

アップデート。

これは、レンダリング関数のconsole.logが示すものです。console.log(this.$("ul.bucket-companies"));

[ul.bucket-companies, prevObject: i.fn.i.init[1], context: li.bucket-item, selector: "ul.bucket-companies", constructor: function, init: function…]
0: ul.bucket-companies
context: li.bucket-item
length: 1
prevObject: i.fn.i.init[1]
selector: "ul.bucket-companies"
__proto__: Object[0]
 feng.js:87
4

1 に答える 1

0

この問題は、サーバー宛てのRailsアプリで再度実行することで修正されrake assets:precompileました(このバックボーンコンポーネントを除いたアプリが最初にサーバーにプッシュされたとき、アプリはすでに1回プリコンパイルされていました)。プッシュするときにアセットを再度コンパイルするつもりでしたが、プッシュする前にローカルホストで新しいコードをテストするために、後続のプリコンパイルが必要であったことに驚いています。一度コンパイルしてから、もう一度コンパイルせずにjavascript(jQuery UIを含む)を追加すると、不親切な方法で物事が混ざり合ったと思います。

于 2013-01-18T00:24:02.807 に答える