Die Verwendung von Rails-Daten als Teil von Javascript ist ein extrem regelmäßiger Bedarf, insbesondere für Javascript-Anwendungen wie Angular, Ember und SPA.
Wenn es sich um eine kleine Datenmenge handelt, können wir sie direkt den Ruby-Variablen zuweisen.
Von der Schiene aus gesehen:
Bsp:-
HTML:
<input id="user" type="hidden" value="" />;
$('#user').val();
HTML-Daten-Attribut:
Loading ..
;
$('#posts').data('posts');
Von Schienensteuerungen mit Hilfe von Gon:
Die oben genannten Szenarien scheinen nicht makellos und sinnvoll zu sein, insbesondere wenn wir mehr Informationen als nur einige Daten benötigen.
Eigentlich gibt es eine gute Lösung für die Übergabe von Rails-Variablen von Controllern zu Javascript d.h. gon gem.
Gon hilft uns, unsere Bedürfnisse auf einfachere und sauberere Weise zu erfüllen.
Aufstellen
Es ist recht einfach, gon gem einzurichten.
Fügen Sie gem 'gon' zum Gemfile hinzu und führen Sie bundle install aus
einfügen. ; im head-Tag von layouts/application.html.erb. Sie können es überall dort platzieren, wo Sie es verwenden möchten. Verschieben Sie es in eine bestimmte Ansicht, wenn Sie es nur in dieser bestimmten Ansicht verwenden möchten.
Variablen von Controller/View setzen (meist von Controllern)
gon.currentUser = @user
gon.title = 'Beispiel Gon'
#or
gon.push({
currentUser: @user,
title: 'Beispiel Gon''
})
In Javascript können wir sie also als normale Variablen verwenden
console.log(gon.currentUser);
console.log(gon.title);
Anmerkungen:
Wir können den Variablennamensraum ändern. Das heißt, wir können app.variableName anstelle von gon.variableName verwenden. Aber wir müssen den Namespace beim Einfügen angeben.
;
Es gibt weitere Listen von Optionen, die wir für gon(https://github.com/gazay/gon/wiki/Options) einstellen können.
Gon kann mit jbuilder und rabl( verwendet werdenhttps://github.com/gazay/gon/wiki)
Schieben Sie mindestens eine Variable zu gon, um zu verhindern, dass gon einen nicht definierten Fehler hat, ansonsten überprüfen Sie, ob es definiert ist oder nicht.
Gon-Variablen können aus Rails nachgeladen werden, indem man gon.watch. Weitere Informationen finden Sie in der offiziellen gon-Dokumentation.
Ressourcen:
https://github.com/gazay/gon
Sehen Sie sich diesen Artikel auf unserer Facebook-Seite an: https://www.facebook.com/RailsCarma