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 背后的原因是什么?
谢谢,
Jignesh
答案 0 :(得分:0)
好的,我找到了答案。
以下是我的申请中包含的插件:
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的回复。这帮助我得到了上述答案。
谢谢, Jignesh