CoffeeScript и erb: требуется переменный файл - PullRequest
0 голосов
/ 28 января 2012

В моем приложении rails 3.1 у меня есть 3 разных файла javascript для моей таблицы html.Допустим, table1.js.coffee, table2 и table3.

В моем файле application.js у меня есть:

// = require table

И в моем table.js.coffee.erb яхочу сделать что-то вроде этого:

// = require <%= 'table2' %>
// or (more useful)
// = require <%= Settings.js_table %>

Таким образом, я смогу изменить поведение моей таблицы из внешнего файла конфигурации.На данный момент это не работает.И мне было интересно, возможно ли это?

Спасибо!

1 Ответ

1 голос
/ 28 января 2012

Это не сработает.

Файлы в конвейере компилируются по первому запросу, основываясь на их содержимом (и любом разрешенном erb) в то время.

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

Изменить в ответ на комментарий:

Извините, мне следовало быть яснее. Общий случай этого не сработает.

В случае использования его с require, оператор require является специальной директивой Sprockets. Он обрабатывается Sprockets до того, как его получает обработчик erb.

Директива требует один аргумент - строку. В этом случае вы передали 3 аргумента директиве require: открывающий тег erb, строку в кавычках и закрывающий тег erb.

Вот почему вы получаете ошибку аргумента 3 для 1.

Лучший (и, возможно, единственный) способ динамически включать файлы во время выполнения - из уровня просмотра.

...