2017-08-04 44 views
0

我遇到了通過ajax調用將內容加載到內容div的問題。通過ajax調用渲染Ruby on Rails無法按預期工作

我在我的應用程序中使用下面的代碼ChangeAvatarController。

class ChangeAvatarController < ApplicationController 

    before_action :authenticate_user! 

    def index 
     render '_index', :layout => false 
    end 
    end 
end 

在我dashboard.html.erb我有以下的div

<div id="content"> 

</div> 

我有下面這段代碼

應用程序/視圖/ change_avatar/_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> 
    var app = angular.module('myApp', []); 
    app.controller('myCtrl', function($scope) { 
     $scope.firstName = "John"; 
     $scope.lastName = "Doe"; 
    }); 
</script> 

和APP /視圖/ change_avatar/_index.js.erb

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

我在rooutes.rb以下航線

get 'change_avatar/index' 

所以,

當我渲染index.html.erb用以下方式很完美:

<div id="content> 
    <%= render 'change_avatar/index', remote: true %> 
</div> 

名:John

姓氏:Doe

全名:李四

然而,當我用下面的方法,

<script> 
    $.ajax({ 
     url: "/change_avatar/index", 
     type: 'GET', 
     cache: false, 
     success: function(html){ 
      $("#content").append(html); 
     } 
    }) 
</script> 

<div id='content'> 


</div> 

我得到這樣的一個:

名字:

姓:

全名:{{firstName +「」+ lastName}}

在javascript調試控制檯中沒有錯誤。

我想不通的問題是什麼,

任何建議,

感謝。

回答

0
<script> 
    $.ajax({ 
     url: "/change_avatar/index", 
     type: 'GET', 
     cache: false 
    }) 
</script> 

就足夠了,因爲我假設你有一個changeavatars/index.js.erb的文件:

$("#content").append("<%= escape_javascript(render 'changeavatars/index') %>") 

此外,你應該在你的控制器改變render '_index'只是render :index

+0

葉氏我在我的changeavatars文件夾中有index.js.erb文件。當我chnage呈現'_index'呈現'索引'在我的控制器中,我收到以下錯誤。 –

+0

jquery.self-bd7ddd3 ... .js?body = 1:350 Uncaught SyntaxError:意外標識符 at eval() at jquery.self-bd7ddd3 ... .js?body = 1:350 at Function.globalEval(jquery.self-bd7ddd3 ... .js?body = 1 :351) 在文本腳本(jquery.self-bd7ddd3 ...的.js體= 1:10373) 在ajaxConvert(jquery.self-bd7ddd3 ...的.js體= 1:9333) 在有(jquery.self- (jquery.self-bd7ddd3 ... .js?body = 1:10312) at Object.send(jquery.self-bd7ddd3 ... .js?body = 1:10322)在回調(jquery.self-bd7ddd3 ... .js?body = 1:10312) ) at Function.ajax(jquery.self-bd7ddd3 ... .js?body = 1:9739) –