如何为我的应用程序更改JAVASCRIPT _DEFAULT_ SOURCES?

时间:2010-01-19 00:45:57

标签: javascript ruby-on-rails

当您致电javascript_include_tag :defaults时,您通常会得到:prototype.jseffects.jsdragdrop.jscontrols.js

这些存储在名为'JAVASCRIPT_DEFAULT_SOURCES`的ActionView::Helpers::AssetTagHelper中的常量中。我的应用程序使用jQuery,所以我想用更有用的东西替换Prototype引用。

我根据jRails的源代码添加了这些行的初始化器:

ActionView::Helpers::AssetTagHelper::JAVASCRIPT_DEFAULT_SOURCES = %w{ jquery-1.4.min jquery-ui jquery.cookie }
ActionView::Helpers::AssetTagHelper::reset_javascript_include_default

但是当我这样做时,我会在启动时得到warning: already initialized constant JAVASCRIPT_DEFAULT_SOURCES

更改此值的正确方法是什么?在源代码中,它在设置之前检查常量,但显然是在它运行初始化程序脚本之前发生的。


Rails 3.0版本将为选择JS库提供更大的灵活性,所以我想这是一个有效期的问题。

2 个答案:

答案 0 :(得分:0)

为什么不做这样的事情?

<%= javascript_include_tag "jquery-1.4.min", "jquery-ui", "jquery.cookie" %>

您不需要使用“:defaults”选项。看看:

http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html#M001713

答案 1 :(得分:0)

根据ruby-forum上的this thread,你不能。虽然,如果你看here,你可以抓住一些.diff文件,至少可以让你做这样的事情:

# environment.rb
ActionView::Helpers::AssetTagHelper::register_javascript_expansion :monkey, "head", "body", "tail"
ActionView::Helpers::AssetTagHelper::register_stylesheet_expansion :monkey, "head", "body", "tail"

# your .erb/.haml files
javascript_include_tag :monkey
stylesheet_link_tag :monkey

我知道这显然不能帮助你做你想做的事情,但希望它至少可以帮助你指明一个积极的方向。