1

Railsアプリ内にHerokuで動作していないローカルホストで動作しているバックボーンアプリがあります。Railsアプリの残りの部分はHerokuで正常に動作しますが、通常の「申し訳ありませんが、問題が発生しました」というメッセージが表示されます。これは、このページ固有のバックボーンのものです。メインビューをレンダリングしようとすると、エラーがスローされます。

Started GET "/employeedirectory" for 207.230.251.130 at 2013-01-19 23:34:21 +0000
2013-01-19T23:34:21+00:00 app[web.1]: Completed 500 Internal Server Error in 3ms

データベースは機能しており、Herokuにシードされています。実際、クエリが実行される前でもエラーがスローされます。テンプレートシステムの設定方法かもしれないと思います。index.html.erbページは、テンプレートが挿入されるいくつかのdivを除いて、基本的に空です。アプリは、このユーティリティテンプレートローダー(以下のコードを参照)を使用して、これらのテンプレートをロードします。ローカルホストでは、で参照されるテンプレート get('templates/...)はRailsパブリックフォルダーから取得されますが、util.jsファイル自体は/assets/javascriptsディレクトリにあり、プリコンパイル後にパブリックフォルダーにコピーされます。私はそれをHerokuで使用しているのと同じ構造でHerokuにプッシュしましたが、assets:precompileの後で変更される可能性があり、get('templatesそれでもそれらのテンプレートを取得できるかどうかはわかりません。

これは、の後のパブリックディレクトリ構造assets:precompileです。テンプレートはアセットフォルダの隣にあります。

ここに画像の説明を入力してください

テンプレートをロードするUtils.jsファイル

window.templateLoader = {

    load: function(views, callback) {

        var deferreds = [];

        $.each(views, function(index, view) {
            if (window[view]) {
                deferreds.push($.get('templates/' + view + '.html', function(data) {
                    window[view].prototype.template = _.template(data);
                }, 'html'));
            } else {
                alert(view + " not found");
            }
        });

        $.when.apply(null, deferreds).done(callback);
    }

};

テンプレートローダーは、Backboneアプリがこのように初期化される前にテンプレートをロードします

templateLoader.load(["HomeView", "ContactView", "HeaderView", "EmployeeView", "EmployeeSummaryView", "EmployeeListItemView"],
    function () {
        app = new Router();
        Backbone.history.start();
    });

したがって、要約すると、public / templatesフォルダーでない場合はRailsディレクトリのどこに、get関数によって取得されたテンプレートをこのコードに配置して、Herokuで取得できるようにする必要があります。

   $.each(views, function(index, view) {
                if (window[view]) {
                    deferreds.push($.get('templates/' + view + '.html', function(data) {
                        window[view].prototype.template = _.template(data);
                    }, 'html'));
                } else {
                    alert(view + " not found");
                }
            });

テンプレートが問題ではない場合、誰かが私が見るかもしれない他のアイデアを持っていますか?

4

0 に答える 0