没有加载Ruby on Rails脚本

时间:2017-08-04 16:47:35

标签: ruby-on-rails angularjs ruby ajax asset-pipeline

在我的ruby on rails应用程序中,我通过ajax调用生成视图。

我正在使用以下代码。

$("#a_div_id").html("<%= escape_javascript(render 'index')%>");

我尝试呈现的视图是_index.html.erb:

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>


<div ng-app="myApp" ng-controller="myCtrl">

    First Name: <input type="text" ng-model="firstName"><br>
    Last Name: <input type="text" ng-model="lastName"><br>
    <br>
    Full Name: {{firstName + " " + lastName}}
</div>

<script>

    alert('first');

    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {

        alert('second');

        $scope.firstName = "John";
        $scope.lastName = "Doe";
    });

    alert('third');

</script>

当我渲染视图时,我只收到第一条和第三条消息。但是,当我将这段代码添加到dashboard.html.erb而不是通过ajax代码渲染时,它完全有效。

在第一种情况下,我收到以下错误。

angular.min.js:6 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.4.8/$injector/modulerr?p0=myApp&p1=Error%3A%2…ogleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.4.8%2Fangular.min.js%3A20%3A274)
    at angular.min.js:6
    at angular.min.js:38
    at n (angular.min.js:7)
    at g (angular.min.js:37)
    at eb (angular.min.js:41)
    at c (angular.min.js:19)
    at yc (angular.min.js:20)
    at Zd (angular.min.js:19)
    at HTMLDocument.<anonymous> (angular.min.js:294)
    at fire (jquery.self-bd7ddd3….js?body=1:3233)

我是我的智慧&#39;最后,我决定不知道我错过了什么,

任何建议,

感谢。

1 个答案:

答案 0 :(得分:0)

您可以在没有escape_javascript的情况下尝试。 同样放一个这样的debugger,这将在chrome执行js时设置一个断点。

debugger;
$("#a_div_id").html("<%= render 'index' %>");

这将有助于您了解jquery正在尝试添加为HTML。

如果这不起作用,

可能你应该在script标签中取js并将其放在某个方法中,并在将索引添加到dom后调用该方法。

$("#a_div_id").html("<%= render 'index' %>");
myMethodToRenderAngular();