AngularJS模板在本地呈现,但在Heroku中不呈现

时间:2014-02-10 05:23:49

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

我正在使用AngularJS& amp; 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目录中的模板。我将模板网址引用为templateUrl:./assets/cityOverview.html

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

  

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

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

2 个答案:

答案 0 :(得分:1)

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

这意味着您无法在JS文件中将模板名称指定为"/assets/cityOverview.html"。您可以将js文件重命名为.js.erb,然后编写"<%=asset_path '/assets/cityOverview.html'%>"。这可以确保文件名也具有哈希值。

答案 1 :(得分:0)

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