我用jrails插件从原型库切换到jquery。之后我收到了警告:
jrails.rb:17: warning: already initialized constant JAVASCRIPT_DEFAULT_SOURCES
jrails.rb看起来像:
ActionView::Helpers::PrototypeHelper::JQUERY_VAR = 'jQuery'
ActionView::Helpers::AssetTagHelper::JAVASCRIPT_DEFAULT_SOURCES = ['jquery.min', 'jquery-ui.min', 'jrails.min']
ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
ActionView::Helpers::AssetTagHelper.register_javascript_expansion :jquery => ['jquery.min', 'jquery-ui.min']
require 'jquery/jrails'
JAVASCRIPT_DEFAULT_SOURCES在哪里初始化其他?我该如何修复此警告?
答案 0 :(得分:1)
在jrails.rb中你应该用“默认”删除(或评论)2行,你可以为jrails添加1行:
ActionView::Helpers::PrototypeHelper::JQUERY_VAR = 'jQuery'
#ActionView::Helpers::AssetTagHelper::JAVASCRIPT_DEFAULT_SOURCES = ['jquery.min', 'jquery-ui.min', 'jrails.min']
#ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
ActionView::Helpers::AssetTagHelper.register_javascript_expansion :jquery => ['jquery.min', 'jquery-ui.min']
ActionView::Helpers::AssetTagHelper.register_javascript_expansion :jrails => ['jrails.min']
require 'jquery/jrails'
在布局中,使用jquery和jrails显式替换默认:
= javascript_include_tag :jquery
= javascript_include_tag :jrails
有利的是,这种方法更具描述性。
答案 1 :(得分:0)
看起来ActionView :: Helpers :: AssetTagHelper :: JAVASCRIPT_DEFAULT_SOURCES也在文件/rails/init.rb的jrails插件中设置。
警告是否会导致您的申请出现问题?
如果你想摆脱它,你可以删除插件的/rails/init.rb中的引用,或者放一个if来检查常量是否已经存在。
我正在寻找http://github.com/aaronchi/jrails/blob/master/rails/init.rb这个答案。
答案 2 :(得分:0)
jrails的目的之一是通过jQuery替换Rails 1.x和2.x中默认的prototype。因此,JAVASCRIPT_DEFAULT_SOURCES
被覆盖。这被铁轨识别并导致警告。这是一个特色,而不是一个BUG。
这些天我正在重新使用compass-jquery-plugin来从'W.I.P'到'release'。我将添加更多AssetTagHelpers。