2013-09-22 221 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' 
     }) 
    } 
    ]) 

这样我就不用担心文件的位置或者导轨如何组织路由。

希望这有助于