2017-03-31 8 views
0

Ich habe eine einfache Ansicht, aber Purchasebelongs to :client. Um auf die purchases zuzugreifen, muss ich daher eine client_id bereitstellen. :Rails + Vue: Zugriff auf Instanzvariable

$(document).ready(function() { 
    var purchases = new Vue({ 
    el: '#purchases', 
    data: { 
     purchases: [] 
    }, 
    ready: function() { 
     var that; 
     that = this; 
     $.ajax({ 
     url: 'clients/' + CLIENT_ID + '/purchases.json', // problem 
     success: function(res) { 
      console.log(res) 
      that.purchases = res; 
     } 
     }); 
    } 
    }); 
}); 

Wie greife ich auf die client_id in dem Ajax-Request? Ich versuchte <%= @client.id %>, aber es erhält den Fehler undefined method ID 'für Null: NilClass`.

Wie übergebe ich diese Variable?

+0

Die Frage ist, wo Sie 'CLIENT_ID' definiert haben? –

+0

Es ist eine Ruby-Instanzvariable in der Ansicht/Controller und ist in den Seitenparametern definiert –

Antwort

1

Die Antwort auf die Frage ist, dass Sie nicht direkt auf eine Instanzvariable in einer js-Funktion zugreifen können. Dies liegt daran, dass js eine Client-Sprache ist, die nur in Ihrem Browser läuft und ruby ​​/ rails eine serverseitige Sprache ist.

Die einzige Möglichkeit, wie Sie auf die Variable in js zugreifen können, besteht darin, sie als HTML-Daten zu übergeben. Zum Beispiel als verstecktes Feld in der entsprechenden html.erb-Datei.

<%= hidden_field_tag('client_id', @client_id) %> 

und als

client_id: $('#client_id').val() 

in der js Datei zugreifen.

Verwandte Themen