2017-08-04 110 views
0

在我的Ruby on Rails应用程序中,我通过ajax调用生成视图。Ruby on Rails脚本未加载

我使用的是以下代码段。

$("#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) 

我是在我束手无策,我couln't决定,我错过了什么,

任何建议,

感谢。

回答

0

你可以试试没有escape_javascript。 也是这样的,这会在Chrome执行js时产生一个断点。

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

这将帮助您查看jQuery正在尝试添加为HTML。

如果这不起作用,

也许你应该采取的JS在script标签,并把它放在了一些方法,并调用该方法已添加索引DOM后。

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

我尝试省略escape_javascript它没有工作。我也尝试在渲染索引后加载angularJS,但它并没有工作。 –

+0

您是否在浏览器控制台中看到错误?将调试器放在$ scope.firstName =“John”上面;然后一次运行一个步骤 –

+0

Yeap。未捕获的错误:[$ 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) 在angular.js:38 在angular.js:4458 以n(angular.js:340) 在g(angular.js:4419) 在EB(在jd(angular.js:1697) 处在cd(angular.js:1676) 处在HTMLDocument处的Zd(angular.js:1591) 处。 (angular.js:29013) at fire(jquery.self-bd7ddd3 ... .js?body = 1:3233) –