当您致电javascript_include_tag :defaults
时,您通常会得到:prototype.js
,effects.js
,dragdrop.js
和controls.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库提供更大的灵活性,所以我想这是一个有效期的问题。
答案 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
我知道这显然不能帮助你做你想做的事情,但希望它至少可以帮助你指明一个积极的方向。