2013-09-22 190 views
1

我試圖編譯使用RAILS_ENV =產品包的exec耙資產我的Rails應用程序資產:預編譯,但這並不編譯我的AngularJS資產,所以我的控制檯報告如下:預編譯軌AngularJS資產

ActionController::RoutingError (No route matches [GET] "/assets/app/views/products/index.html"): 

我的AngularJS資產位於「/ assets/app /」下,因此我試圖通過將以下內容添加到我的production.rb中來編譯角度文件夾,但仍然無法正常工作。

config.assets.precompile += %w(app/* bootstrap/* datatable/* .... 

我可以找到這個路徑下的編譯索引文件:

public/assets/app/views/products/index-2429bd0f8fc0762dcc075e51f0306c5b.html 

任何想法?

UPDATE

也試過config.serve_static_assets =生產假的,但它會導致更多的缺少資產錯誤

感謝

回答

1

我已經通過這個在我的應用工作,通過使用常數來獲得路徑結構權利。

我的角度應用程序是旅程(你顯然是不同的)

所以我宣佈角度應用程序作爲一個模塊

this.journey = angular.module('journey', [ 
    'ngResource', 
    'ngRoute' 
    ]); 

然後,我有一個名爲constants.js.erb,我宣佈我的模板文件

journey.constant('INDEX_TEMPLATE', '<%= asset_path('journeys/journey_index.html')%>'); 
journey.constant('EDIT_JOURNEY_TEMPLATE', '<%= asset_path('journeys/journey_edit.html') %>'); 

最後在我的服務中,我使用聲明爲模板的常量url

journey.config([ 
    '$routeProvider', 
    '$locationProvider', 
    'INDEX_TEMPLATE', 
    'EDIT_JOURNEY_TEMPLATE', 
    function ($routeProvider, $locationProvider, INDEX_TEMPLATE, EDIT_JOURNEY_TEMPLATE) { 
     $locationProvider.html5Mode(false); 
     return $routeProvider.when('/', { 
     templateUrl: INDEX_TEMPLATE, 
     controller: 'JourneyIndexController' 
     }) 
    } 
    ]) 

這樣我就不用擔心文件的位置或者導軌如何組織路由。

希望這有助於