2014-02-10 61 views
2

我正在用AngularJS構建一個應用程序& Rails 4,並且正在使用Heroku來託管該站點。AngularJS模板在本地渲染,但不在Heroku

我在資產/模板文件夾下放置了好幾個模板作爲haml文件。

我創建了一個HAML初始化與Rails.application.assets.register_engine '.haml', Tilt::HamlTemplate,並添加下面一行到我的application.rb中:

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

我沒有這個基礎上在計算器上其他線程。

這在本地運行良好,但在嘗試訪問推送到heroku後的網站時,似乎無法找到資產/模板目錄中的模板。我引用我的模板網址爲templateUrl:./assets/cityOverview.html

具體來說,Heroku上我的節目記錄:

2014-02-10T05:17:25.042728 + 00:00的應用[web.1]:ActionController的:: RoutingError(沒有路由匹配[GET]「/assets/cityWelcome.html」):

我錯過了什麼?我應該將模板移至視圖嗎?

+0

嘗試此網址,看看是否有幫助: - https://github.com/rails/sprockets-rails/issues/95#issuecomment-27367210 – Catmandu

回答

0
  1. 我看到你加入HAML中間件到應用程序,而不是使用.haml模板使用html的模板
  2. 使用絕對pathes(SITE_PATH:端口/資產/ TEMPLATE_NAME)
1

您製作的HTML模板可能會添加散列!例如,在發展的文件路徑將會/assets/cityOverview.html,但對生產的滑軌資產管道將增加一個哈希這樣的:/assets/cityOverview-41ac8fc9a65390498a34680a9uc53951.html

這意味着你不能在你的JS文件"/assets/cityOverview.html"指定模板名稱。您可以將您的js文件重命名爲.js.erb,然後編寫"<%=asset_path '/assets/cityOverview.html'%>"。這可確保文件名也具有散列。