【问题标题】:AngularJS templates render locally, but not in HerokuAngularJS 模板在本地渲染,但不在 Heroku 中
【发布时间】:2014-02-10 05:23:48
【问题描述】:

我正在使用 AngularJS 和 Rails 4 构建一个应用程序,并且正在使用 Heroku 来托管该网站。

我在 assets/templates 文件夹下放置了几个模板作为 haml 文件。

我使用Rails.application.assets.register_engine '.haml', Tilt::HamlTemplate 创建了一个haml 初始化程序,并将以下行添加到我的application.rb 中:

config.assets.paths << Rails.root.join('app', 'assets', 'templates')

我是根据 stackOverflow 上的其他线程做的。

这在本地工作得很好,但是在推送到 heroku 后尝试访问该站点时,它似乎无法在 assets/templates 目录中找到模板。我将我的模板 URL 引用为 templateUrl:./assets/cityOverview.html

具体来说,我的 Heroku 日志显示:

2014-02-10T05:17:25.042728+00:00 app[web.1]: ActionController::RoutingError(没有路由匹配 [GET] "/assets/cityWelcome.html"):

我错过了什么?我应该将我的模板移动到视图中吗?

【问题讨论】:

标签: ruby-on-rails ruby angularjs templates heroku


【解决方案1】:

您在生产中的 HTML 模板可能会附加一个哈希!例如,在开发中,文件路径为/assets/cityOverview.html,但在生产中,Rails 资产管道将添加如下哈希:/assets/cityOverview-41ac8fc9a65390498a34680a9uc53951.html

这意味着您不能将 JS 文件中的模板名称指定为 "/assets/cityOverview.html"。您可以将您的 js 文件重命名为 .js.erb,然后写入 "&lt;%=asset_path '/assets/cityOverview.html'%&gt;"。这样可以确保文件名也具有哈希值。

【讨论】:

    【解决方案2】:
    1. 我看到您将 haml 中间件加入到您的应用程序中,但不是使用 .haml 模板,而是使用 .html 模板
    2. 使用绝对路径 (SITE_PATH:port/assets/TEMPLATE_NAME)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      • 2013-11-03
      • 1970-01-01
      • 2018-01-04
      相关资源
      最近更新 更多