Итерация по объекту 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}...]

Другие вопросы по тегам