2017-02-04 8 views
1

arbeiten Ich versuche, einen AJAX-Aufruf zu Rails-Controller zu senden einige Daten zu holen und Vue.js zur Ausgabe verwenden. Aber es scheint keine Anfrage an den Controller zu senden. Was mache ich hier falsch? Vue.js funktioniert ohne AJAX-AufrufVue.js mit Rails nicht

app/assets/javascript/calculator.js

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

app/controllers/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 

app/views /calculator/index.html.haml

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

einige Fragen: Haben Sie für eine Rails-Route festgelegten 'bekommen: '/ Rechner'? Was sagen Ihre Server-Logs? – Yaniv

+0

Wenn der Server keine Anfragen erhalten hat, dann sind Sie sicher, dass ein Haken ‚bereit‘ Feuer? Welche Version von Vue.js benutzt du? Ab Vue2.0 existiert der "ready" Callback nicht mehr. –

Antwort

2

Statt ready versuchen mounted:

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

Das hat funktioniert! Kannst du erklären, warum berittene Arbeiten, aber fertig nicht? Aus dem Diagramm gehe ich davon aus, dass mounted immer verwendet werden sollte anstatt bereit zu sein? –

+2

Korrekt. Eigentlich gibt es so etwas nicht. "mounted" ist vue's "ready", formlos angegeben. –