Rails: «ноль» вместо массива с 3 элементами при попытке использовать массив ruby ​​в javascript - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть этот фрагмент кода:

в моем приложении / assets / javascripts / application.js

//= require jquery
//= require harddisk
//= require rails-ujs
//= require_tree .

в моем приложении / assets / javascripts / harddisk.js.erb

  var harddisk_locations = [<%= raw @harddisk_locations.to_json %>];
  console.log(harddisk_locations);

в моем приложении / models / harddisk.rb

@harddisk_locations = ["foo", "bar", "baz"];

Но почему-то на странице жесткого диска в консоли браузера

@ harddisk_locations имеет значение null вместо массива с 3 элементами.

Почему так и как исправить?

Это не поможет, если я переместу

@ harddisk_locations = ["foo", "bar", "baz"];

из модели жесткого диска в harddisks_controller.rb

1 Ответ

0 голосов
/ 03 сентября 2018

Вы должны определить их как глобальную переменную вместо переменной экземпляра. Вы можете изменить код вашей модели на:

HD_LOCATIONS = ['foo', 'bar', 'baz']

и в вашем JS-файле:

var harddisk_locations = [<%= raw Harddisk::HD_LOCATIONS.to_json %>];

Подробнее о типах переменных можно прочитать здесь: https://www.tutorialspoint.com/ruby/ruby_variables.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...