0

我使用 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 在哪里初始化?我该如何解决这个警告?

4

3 回答 3

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

作为有利的,这种方法甚至更具描述性。

于 2010-02-19T13:24:49.197 回答
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以获得这个答案。

于 2010-01-08T17:27:10.140 回答
0

jrails 的目的之一是通过 jQuery 替换 Rails 1.x 和 2.x 中默认的原型。因此,JAVASCRIPT_DEFAULT_SOURCES被覆盖。这被 rails 识别并导致警告。这是一个功能,而不是一个错误。

这些天我正在修改 compass-jquery-plugin 以从“WIP”到“已发布”。我将添加更多 AssetTagHelpers。

于 2010-02-20T07:48:13.187 回答