Как определить переменные GON в представлении рельсы (тонкие файлы)?

У меня есть несколько представлений, где мне нужно передать массивы ruby ​​/rails в код javascript/jquery в моем проекте. Я использую gon gem, который прекрасно работает, когда я определяю gon-переменные в коде контроллера, но как я могу назначить переменную в коде представления (тонкий файл)?

Например, если у нас есть следующий код в контроллере:

gon.test_var = "hello there"

а затем попробуйте предупредить об этом в моем коде jquery/javascript, как показано ниже:

$(document).ready(function() {
  alert(gon.test_var);
});

Работает нормально.

Как я могу добиться того же самого путем определения переменной в файле представления (я должен иметь возможность определить gon.test_var в файле Slim)?

Изменить: Обратите внимание, что значения, которые мы присваиваем переменной, являются переменными ruby, а не статической строкой или числом.

2 ответа

Официальный способ — использовать глобальные настройки Gon:

      - Gon.global.push test_var: your_value

и используйте глобальные данные:

      gon.global.test_var

другой способ — передать gon как переменную экземпляра. Итак, в вашем контроллере ваше назначение

      @gon = gon

тогда, на ваш взгляд, вы можете использовать

      - @gon.push test_var: your_value
- @gon.test_var2 = your_value # old syntax

Задавать:

- name = 'smth'
= current_gon.gon["name"] = name

Получить:

= current_gon.gon["name"]

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