问题描述
|
Rails 3.1 edge使用链轮来处理.js和.scss文件。
链轮使用注释来处理依赖项。
我将这三个文件夹(dojo dijit dojox)放在了vendor / assets / javascripts中。
然后在app / assets / javascripts / application.js中添加一行
// =需要dojo / dojo
console.log(dojo);
现在,dojo已合并到application.js中。
但是dojo本身具有依赖系统。当我需要更多的dojo模块时。它找不到正确的路径。
dojo.require(\“ dojox.grid.DataGrid \”);
// Webkit控制台中的错误:错误:无法加载\'dojox.grid.DataGrid \';上次尝试\'../ dojox / grid / DataGrid.js \'
// Rails服务器日志中的错误:在12月4日星期六01:26:05 +0800 2011年12月7日启动GET \“ / undefined ../ dojox / grid / DataGrid.js \”
这是两个不同的依赖系统。如何将它们放在一起?
解决方法
dojo.js
不会很自然地被重命名。这是因为Dojo初始化过程的一部分涉及在DOM中搜索负责自身加载的脚本标签。这样做有两个原因:
确定其baseUrl
(如果尚未指定)
拾取脚本标签本身中指定的任何djConfig
(或1.6+中的data-dojo-config
)属性
搜索此脚本标记时,它将查找将src
设置为dojo.js
或dojo.xd.js
的脚本;在您的情况下找不到它,因此失败了。
通过在加载Dojo的另一个script
标记中以编程方式完全指定djConfig
(或1.6+中的dojoConfig
),以及在这些配置属性中手动指定baseUrl
,应该可以解决这两个问题。
例如,如果原始帖子中提到的application.js
位于vendor/assets/javascripts
中,则可以尝试执行以下操作:
<script type=\"text/javascript\">
//if you\'re using 1.5 or earlier,use djConfig instead of dojoConfig
var dojoConfig = {
//note that baseUrl points to the folder containing dojo.js,therefore the dojo folder
baseUrl: \'vendor/assets/javascripts/dojo/\'
};
</script>
<script type=\"text/javascript\" src=\"vendor/assets/javascripts/application.js\"></script>
有关dojo配置设置的更多信息:http://dojotoolkit.org/reference-guide/djConfig.html(实际上,该页面实际上在baseUrl下有一个有关重命名dojo.js
的注释。)
,尝试将dojo文件添加到/vendor/assets/javascripts
下的dojo/scripts
目录中。在dojo目录中,在dojo
目录中创建一个dojo.js文件,并将//= provide \"scripts\"
放入该文件中。
然后在您的application.js
文件中放入//= require <dojo>
。请查看Sprockets网站http://getsprockets.org/以获取信息,但是应该可以。
尚未针对Rails 3.1和资产管道发布文档,因此很多此类内容都是您自己尝试得出的。
,嗯...为什么要在in21ѭ和应用中而不是than22ѭ中放置JavaScript?您在public/javascripts
和include24ѭ中包含了任何内容,其中path_to_javascript将是public/javascripts/dojo/DataGrid.js
中的\"dojo/DataGrid\"
http://guides.rubyonrails.org/getting_started.html
,我知道可能已经晚了,但我可以帮助其他人。
我终于使它起作用,并在此处发布了说明。