/ / Javascript funziona nelle rotaie 4 albero asset pipeline - javascript, ruby-on-rails, asset-pipeline

Funzioni Javascript nei binari 4 albero di asset pipeline: javascript, ruby-on-rails, asset-pipeline

Sto cercando di utilizzare una funzione javascript viala Chrome Console quando inserisco la funzione javascript all'interno di Rails Asset Pipeline Manifest. Ecco i passaggi che ho preso per creare e configurare una semplice App di Rails 4.2.4

$ rails new JavascriptExample
$ cd JavascriptExample
$ rails g scaffold Bear name:string
$ rake db:migrate

Quindi modificare il app/assets/javascripts/bears.coffee e aggiungere un registro della console e una funzione.

console.log("asset pipeline sucks")
square = (x) -> x * x

Quindi accendo il server

$ rails s

visito localhost:3000/bears e nella Console di Chrome vedo che la mia prima riga di codice ha funzionato. Tuttavia quando provo il comando square(5); in console ricevo un errore Uncaught ReferenceError: square is not defined(…)

Perché non posso farlo in questo modo quando questa funzione è chiaramente caricata in application.js?

risposte:

1 per risposta № 1

Questo è ciò che il tuo coffeescript è stato compilato in javascript

(function() {
var square;

console.log("asset pipeline sucks");

square = function(x) {
return x * x;
};
}).call(this);

A partire dal Questo: the var keyword is reserved in CoffeeScript, and will trigger a syntax error if used. Local variables are created implicitly by default, quindi non è disponibile in ambito globale come vostra aspettativa

Per farlo funzionare, possiamo fare qualcosa del genere, invece:

console.log("asset pipeline sucks")
@square = (x) -> x * x

Nota che abbiamo @ E ora il javascript compilato sarà:

(function() {
console.log("asset pipeline sucks");

this.square = function(x) {
return x * x;
};

}).call(this);