«Uncaught SyntaxError: Неожиданный токен <» при попытке использовать содержимое массива Rails в Javascript - PullRequest
0 голосов
/ 03 сентября 2018

В Rails 5 я хочу использовать содержимое массива Rails внутри Javascript:

в моем harddisk_controller.rb:

@locations = Harddisk.select(:location).distinct # grab a collection of distinct harddisk locations objects
@harddisk_locations = []
@locations.each do |location|
  @harddisk_locations << location.location # put only the location names into an array
end

Я пытаюсь добиться загрузки содержимого @harddisk_locations Rails в harddisk_locations Javascript:

в application.js:

var harddisk_locations = [<%= raw @harddisk_locations.to_json %>];

Но я получаю сообщение об ошибке с подсветкой [<% = raw @ harddisk_locations.to_json%>] в консоли браузера:

Uncaught SyntaxError: Неожиданный токен <</p>

Я предполагаю, что Javascript жалуется на

<</p>

сразу после

[

характер. Как это исправить?

Ответы [ 2 ]

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

Вы используете синтаксис ERB внутри файла .js. Лучшим решением было бы создать новый файл .js.erb и добавить в него необходимый код.

Предложение относительно вашего кода, вы можете заменить существующий код на @harddisk_locations = Harddisk.select(:location).distinct.map(&:location)

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

Проблема в том, что вы используете неверный синтаксис для js. Вот почему вам нужно переименовать application.js в application.js.erb.

Помните, что если вы хотите вставить строку в erb, вам нужно использовать кавычки:

var harddisk_locations = ["<%= somestring %>"];

В вашем случае, я думаю, raw @harddisk_locations.to_json является действительным json, поэтому кавычки не нужны.

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