2017-02-04 5 views
1

Rails ControllerにAJAX呼び出しを送信してデータを取得し、Vue.jsを使用して出力しようとしています。しかし、それはコントローラに何らかの要求を送信しているようではありません。私はここで間違って何をしていますか? Vue.jsはcalculator.jsVue.js Railsが動作しない

var calculator = new Vue({ 
    el: '.container', 
    data: { 
    numbers: [] 
    }, 
    ready: function() { 
    var that; 
    that = this; 
    $.ajax({ 
     url: '/calculator.json', 
     success: function(response) { 
     that.numbers = response; 
     } 
    }); 
    } 
}); 

アプリ/コントローラ/ calculator_controller.rb

class CalculatorController < ApplicationController 
    def index 
    @numbers = [1,2,3,4,5] 
    respond_to do |format| 
     format.html 
     format.json { render json: @numbers } 
    end 
    end 
end 

アプリ/ビュー/ AJAX呼び出し

アプリ/資産/ javascriptのせずに作業を行います/calculator/index.html.haml

.container 
    .row 
    .col-lg-12 
     %ul 
     %li{ "v-for": "number in numbers" } 
      {{ number }} 
+0

いくつかの質問: '/電卓':あなたは '取得のためのRailsのルートを設定しましたか?あなたのサーバーログは何が起こっていると言いますか? – Yaniv

+0

サーバがリクエストを受信しない場合は、「準備完了」フックが起動していますか?どのバージョンのVue.jsを使用していますか? Vue2.0から始まり、 "ready"コールバックはもう存在しません。 –

答えて

2

代わりのreadymountedを試してみてください。

var calculator = new Vue({ 
    el: '.container', 
    data: { 
    numbers: [] 
    }, 
    mounted: function() { 
    var that; 
    that = this; 
    $.ajax({ 
     url: '/calculator.json', 
     success: function(response) { 
     that.numbers = response; 
     } 
    }); 
    } 
}); 
+0

これはうまくいった!なぜマウントされた作品を説明できますか?準備はできていませんか?ダイアグラムから、私はいつも準備の代わりにマウントしなければならないと思いますか? –

+2

正しい。実際には準備ができているようなものはありません。 「マウントされた」とは、vueの「準備完了」です。 –

関連する問題