Как выставить переменную javascript в Rails 6? - PullRequest
0 голосов
/ 16 июня 2020

У меня в javascipt / pack есть home. js file


var hello = "hello"
window.hello2 = "hello"


Но после загрузки связанного представления (home. html .erb) в javascript консоль моего навигатора для этих переменных я получаю Uncaught ReferenceError: hello is not defined или undefined

1 Ответ

1 голос
/ 16 июня 2020
  1. var hello = "Hello" - Когда вы набираете > hello в консоли, это не сработает из-за концепции под названием Closure в Javascript. Я нашел эту статью полезной.

  2. window.hello2 = "Hello" -> Вы назначаете глобальную переменную. Когда вы набираете > window.hello2 в консоли, он выдаст результат, но просто > hello2 не будет работать, и он даст ReferenceError.

    • window.hello2 доступно для всех ваших JS код, он глобальный.
    • Однако не рекомендуется использовать глобальные переменные, используйте переменные в соответствующих функциях.

Кроме того, вы не упомянули то, как вы используете свой pack/home.js файл.

Если вы включите <%= javascript_pack_tag 'home' %> в app/views/layouts/application.html.erb, тогда ваш JS код будет работать в каждом контроллере / представлении (а не только в Home контроллере .)

Если вы включите <%= javascript_pack_tag 'home' %> в app/views/home/index.html.erb, тогда ваш код JS будет работать только в действии home#index, но он вызывает refre sh.

...