L'utilizzo dei dati Rails come parte di Javascript è una necessità estremamente regolare, in particolare per le applicazioni Javascript come Angular, Ember e SPA.
Se si tratta di una piccola quantità di dati, possiamo assegnarli direttamente alle variabili Ruby.
Dalla vista delle rotaie:
Ex:-
HTML:
<input id="user" type="hidden" value="" /> ; $('#utente').val();
Attributo dei dati HTML:
<%= content_tag "div", id: "posts", data: {posts: Post.limit(5)} do %> Caricamento .. <% end %>;
$('#posts').data('posts');
Dai controller dei binari utilizzando Gon:
Gli scenari di cui sopra non sembrano essere immacolati e sensati, in particolare quando abbiamo bisogno di più informazioni anziché solo di alcuni dati.
In realtà, esiste una buona soluzione per passare le variabili Rails dai controller a Javascript, ad esempio gon gem.
Gon ci aiuta a soddisfare i nostri bisogni in modo più semplice e pulito.
Impostare
È abbastanza semplice configurare Gon Gem.
Aggiungi gem 'gon' a Gemfile ed esegui l'installazione del bundle
Inserire <%= include_gon %>; nel tag head di layouts/application.html.erb. Puoi posizionarlo ovunque desideri utilizzarlo. Spostalo nella vista particolare se desideri utilizzarlo solo in quella vista particolare.
Imposta le variabili dal controller/vista (principalmente dai controller)
gon.currentUser = @utente gon.title = 'Esempio Gon'
#or
gon.push({ currentUser: @user, titolo: 'Sample Gon'' })
Quindi, in JavaScript possiamo usarli come variabili normali
console.log(gon.currentUser); console.log(gon.titolo);
Appunti:
Possiamo modificare lo spazio dei nomi della variabile. Ciò significa che possiamo utilizzare app.variableName invece di gon.variableName. Ma dobbiamo specificare lo spazio dei nomi durante l'inclusione.
<%= include_gon(namespace: 'app') %>;
Esistono altri elenchi di opzioni che possiamo impostare per gon (https://github.com/gazay/gon/wiki/Options).
Gon può essere utilizzato con jbuilder e rabl(https://github.com/gazay/gon/wiki)
Spingere almeno una variabile su gon per evitare che gon si trovi in un errore non definito, altrimenti verificare se è definita o meno.
Le variabili Gon possono essere ricaricate dai binari utilizzando gon.watch. Per ulteriori informazioni, consultare la documentazione ufficiale di gon.
Risorse:
https://github.com/gazay/gon
Dai un'occhiata a questo articolo sulla nostra pagina Facebook: https://www.facebook.com/RailsCarma