从Heroku上的公共目录获取模板

时间:2013-01-19 23:52:24

标签: ruby-on-rails heroku

我在一个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使用的相同,但在资产之后:预编译的内容可能会被更改,我不确定get('templates是否仍然可以检索这些模板。

这是assets:precompile之后的公共目录结构。模板位于assets文件夹旁边。

enter image description here

加载模板的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");
                }
            });

如果模板不是问题,那么我可能会有任何其他想法吗?

0 个答案:

没有答案