Мне недавно пришлось установить dojo с rails 3.1 и конвейером ресурсов. Вот шаги, которые я следовал, чтобы заставить это работать:
1 / Включить додзё
Поместите dojo SDK в vendor / assets / javascripts, чтобы в нем находились папки dojo, dijit и dojox. Включите его в свой шаблон:
= javascript_include_tag "dojo/dojo", :'data-dojo-config' => %Q(baseUrl: '/assets/dojo/', modulePaths: {modules: '/assets/modules', widgets: '/assets/widgets'})
Не забывайте лидирующие символы '/' по активам!
Вы можете использовать Google CDN с запасным вариантом :
script var djConfig = { baseUrl: '/assets/dojo/', modulePaths: {modules: '/assets/modules', widgets: 'widgets'} };
= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/dojo/1.6.1/dojo/dojo.xd.js"
script ="typeof(dojo) === \"undefined\" && document.write(unescape('%3Cscript src=\"#{asset_path('dojo/dojo')}\"%3E%3C/script%3E'));".html_safe
В первой строке укажите ваш djConfig . Второй фактически требует додзе от Google. Третий - запасной вариант.
2 / Включите ваш базовый файл
Удалите все "require" в вашем app / assets / javascripts / application.js и поместите что-то подобное (например):
dojo.provide("myapp");
3 / Играть с dojo.require
В djConfig в 1 / я устанавливаю modulePaths, настраивая их на то, что вы хотите. В моем примере у вас будут те два, куда вы можете поместить свои файлы:
- Приложение / активы / JavaScripts / модули /
- Приложение / активы / JavaScripts / виджеты /
Если я хочу требовать modules / test.js, я просто делаю:
dojo.require("modules.test");
4 / Используйте coffeescript и ERB
Просто добавьте правильное расширение и запустите правильный erb, как описано в документации Rails .
Надеюсь, это вам поможет!