从rails中的资产管道加载javascripts

时间:2014-08-06 14:17:07

标签: ruby-on-rails angularjs

在rails项目中,我只想使用rails应用程序的控制器和模型。为此,我使用angularjs。我将angularjs文件放在assets/angular目录中,然后路由url并从角度设置app.js的模板。通过application_controller.rb中的以下代码了解我的deactive rails视图:

class ApplicationController < ActionController::Base
  protect_from_forgery with: :exception
  def index
    render :layout => 'application', :nothing => true
  end
end

config/routes.rb

  root to: 'application#index'

知道,当我运行服务器并在localhost:3000上运行项目时,我的脚本不会加载,并且html文件的<head>为空。

<html>
 <head>
 </head>
  <body>
   <pre style="word-wrap: break-word; white-space: pre-wrap;">
   </pre>
  </body>
</html>

此问题与资产管道有关,js无法加载。我该如何解决这个问题?

我有这个角度代码:

asset/javascripts/angular/app.js.erb

'use strict';
angular.module('app', ['ngResource'])
        .config(['$routeProvider', function($routeProvider, $locationProvider) {
            $routeProvider
                    .when('/',          {controller: 'ForumIndexController',    templateUrl: '<%= asset_path('templates/index.html') %>'})
                    .otherwise({redirectTo: '/'});
        }
        ]);

view/layout/application.html.erb

<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
  <title>SimpleForum</title>
  <%= stylesheet_link_tag "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>
<body>
<div class="container">
  <div ng-view></div>
</div>
</body>
</html>

assets/javascripts/application.js

//= require jquery
//= require jquery_ujs
//= require angular.min
//= require angular-resource.min
//= require ../angular/app
//= require_tree ../angular

如何设置rails应用程序以加载脚本?

有关修复此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

我认为你不需要角度文件夹的../ infront,因为它与清单处于同一级别。

//= require angular/app
//= require_tree angular

应该没事。