Как связать файл CoffeeScript с представлением? - PullRequest
16 голосов
/ 26 мая 2011

Только что установил rails 3.1 rc1 и пытаюсь найти лучший способ управления javascript с помощью нового конвейера ресурсов. По умолчанию весь coffeescript скомпилирован в один файл application.js, это хорошо.

Каждый отдельный файл сценария кофе добавляется в файл js и оборачивается в анонимную функцию, которая выполняется с помощью метода вызова. Обычный сценарий - использование некоторых jquery для преобразования различных форм в формы ajax, обновление пользовательского интерфейса,и т. д.

Многие из этих сценариев будут относиться к контроллеру или действию, я пытаюсь найти «обычный» способ справиться с этим, так как все заключено в анонимную функцию, как мне только выполнитьпросто код для конкретного контроллера / действия, по умолчанию все анонимные функции выполняются

Я поиграл с некоторыми хаки, где я загружаю контроллер и имя действия в переменные js, а затем в coffeescript проверяю теусловно запускать код, мне это не очень нравится

Первоначально я думал, что каждый кофейный файл будет содержать пространство имен / объект js, и я буду вызывать конкретные из представления, собираясь всплывать, используяdefault_bare = истинная конфигурация

см. Как я могу использовать опцию "--bare" в Rails 3.1 для CoffeeScript?

РЕДАКТИРОВАТЬ

Посмотрев еще немного: это выглядит такможет быть правильный подход - Ошибка «Не удается найти переменную» с Rails 3.1 и Coffeescript

Ответы [ 2 ]

22 голосов
/ 26 мая 2011

Существует два распространенных подхода:

  1. Сделать поведение обусловленным наличием определенного элемента. Например, код для запуска регистрационного листа должен быть предварен чем-то вроде

    if $('#signup').length > 0

  2. Сделать поведение условным для класса в элементе body. Вы можете установить класс тела, используя ERB. Это часто желательно и для таблиц стилей. Код будет что-то вроде

    if $('body').hasClass 'user'

0 голосов
/ 11 февраля 2014

gistyle - это простой гем, который помогает вам запускать специфичные для действий коды JavaScript.

Следуя его настройке, вы устанавливаете некоторые атрибуты данных в элементе body, представляющие текущий контроллер и имена действий. Тогда оно будет вызывать это действие только при загрузке соответствующего представления.

...