我正在使用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”):
我错过了什么?我应该将模板移动到视图吗?
答案 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)