提问人:Jignesh Gohel 提问时间:5/18/2012 更新时间:5/24/2012 访问量:478
rails 3.0.11 javascript_include_tag自动包含一个额外的 JS 文件
rails 3.0.11 javascript_include_tag automatically includes an extra JS file
问:
Rails 3.0.11、Ruby 1.9.3
当我在视图文件中使用 javascript_include_tag(“js/datepicker”) 时 它包括 2 个文件。
<script src="/js/datepicker.js?1336410184" type="text/javascript"></script>
<script src="/javascripts/widgets/tooltip.js?1332959153" type="text/javascript"></script>
请注意我没有指定的第二个,它仍然被包括在内。
我有以下文件夹和文件:
/public/javascripts
/public/javascripts/widgets
/public/javascripts/widgets/tooltip.js
/public/js
/public/js/datepicker.js
我的应用程序使用Prototype和jQuery.datepicker.js实际上是Protoplasm Datepicker控件。
/config/application.rb
config.action_view.javascript_expansions[:defaults] = %w(jquery jquery_ujs jquery.prettyPhoto)
任何人都可以让我了解 /javascripts/widgets/tooltip.js 被自动包含的原因是什么?
谢谢
吉涅什
答:
0赞
Jignesh Gohel
5/24/2012
#1
好的,我找到了答案。
以下是我的应用程序中包含的插件:
rails-widgets-jquery (http://github.com/paolodona/rails-widgets/wikis)
这个插件的名为 core.rb 的文件位于 rails-widgets-jquery/lib/widgets/core.rb
重新定义导致我问题中提到的行为javascript_include_tag。
源代码如下:
module ActionView
module Helpers
module AssetTagHelper
# We redefine javascript_include_tag in order to auto-magically include
# the widgets javascripts. If you hame more than one javascript_include_tag
# call, the widgets javascripts gets included only once.
def javascript_include_tag_with_widgets(*sources)
unless @__widgets_has_already_included_its_js
options = sources.last.is_a?(Hash) ? sources.pop : {} # remove options
sources << 'widgets/tooltip'
sources << options # add previously removed option
@__widgets_has_already_included_its_js = true
end
javascript_include_tag_without_widgets(*sources)
end
alias_method_chain :javascript_include_tag, :widgets
end
end
end
感谢您的回复@Salil。这些帮助我找到了上述答案。
谢谢 吉涅什
评论
<%= javascript_include_tag :defaults %>