Итерация по объекту ruby в Javascript с использованием select2
Я работаю над приложением rails, которое использует драгоценный камень select 2. Я выбрал 2 работающих, но мне нужно иметь возможность вводить правильные данные в часть данных функции, чтобы сделать это, я бы хотел перебрать объект MagazineStation. Я пробовал кучу разных вещей, но я не могу заставить его работать. Поэтому в части данных функции я хотел бы перебрать объект MagazineStation, используя ruby, введя идентификатор и имя.
<head>
<script>
$(document).ready(function() {
$("#e11").select2({
placeholder: "Select a Station",
allowClear: true,
multiple: true,
data: [{id: 0, text: 'story'},{id: 1, text: 'bug'},{id: 2, text: 'task'}]
});
});
</script>
</head>
<input id="e11">
2 ответа
Вы можете вывести ruby в свой javascript с помощью ERB, например так:
<%= MagazineStation.all.map { |ms| { id: ms.id, text: ms.name } }.to_json %>
.to_json
part является ключом к выводу строки массива в ваш шаблон (и в дружественном к JavaScript стиле).
Но вам нужно убедиться, что вы вставляете это в свой скрипт на своей странице. Поэтому может быть проще начать с создания обычного выбора, например, с помощью помощника collection_select, а затем превратить эти данные в элемент select2 при загрузке страницы.
Вы можете сделать это так. Переберите объект Ruby в файле.erb.
data: [
<% @Magzinestation.each do |t|%>
{"<%=raw t[0] %>",<%=raw t[1]%>},
<%end%>]
Этот скрипт заменит данные [] на данные [ {данные 1}, {данные 2}...]