2016-08-08 35 views
0

Ich sende eine Var in Schienen, um es in der Ansicht zu verwenden, ich habe eine js Dateiname charts.js.erb, die aufgerufen wird und ich brauche die var zu verwenden, in die Datei js aber ist gleich Nullin Schienen Ich sende eine Var zu sehen und aber in Js-Datei ist Null

in meinem Controller ein, das Verfahren

def index 
    @asd = 'hellow' 
    end 

aus meiner Sicht habe ich

.div= @asd 

tun können, aber in meinem JavaScript-Datei

alert('<%= @asd %>'); 

@asd var ist gleich Null, ich habe getestet ein Arbeiten mit anderen Ruby-Code, aber die Vars funktioniert nicht

+0

Ist das Alarm in der gleichen Ansicht wie Ihr div? Wenn ja, sollte es funktionieren. Wenn es irgendwo in Assets/Javascripts ist, dann sollte es nicht funktionieren. –

+0

Versuchen Sie es mit dem Befehl reply_to zu blockieren. –

+0

NO @SergioTulentsev, ich habe die Datei charts.js mit dieser js verknüpft, und diese Warnung zeigt keine Änderung an. Ich teste die Anzeigen var und ist null – jacr1614

Antwort

2

Das ist nicht, wie ERB mit JavaScript funktioniert. Die JS-Dateien werden vor der Laufzeit generiert, sodass sie keinen Zugriff auf solche dynamischen Serverwerte haben.

Das Muster, dem ich normalerweise folge, ist, den servergenerierten Wert irgendwo im DOM zu platzieren, damit der JS ihn aufheben kann.

<div id="asd" data-asd="<%= @asd %>"> 

Dann, wenn Sie jQuery verwenden, zum Beispiel:

var asd = $('#asd').data('asd');