2012-05-17 38 views
0

Rails的3.0.11和Ruby 1.9.3轨3.0.11 javascript_include_tag自动包含一个额外的JS文件

当我在查看文件使用javascript_include_tag( “JS /日期选择器”) 它包含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 

我的应用程序使用原型和jQuery.The datepicker.js实际上是原生质DatePicker控件。

/config/application.rb

config.action_view.javascript_expansions[:defaults] = %w(jquery jquery_ujs jquery.prettyPhoto) 

可有人请让我明白了什么是落后/javascripts/widgets/tooltip.js事业得到自动包含?

感谢,

Jignesh

+0

你有一个布局,其中包括额外的JavaScript文件?一般来说,这个布局将包含application.js,后者将包含一个树(目录),其中放置其他javascript文件。 – Salil

+0

@Salil - yes在header元素中包含以下内容:'<%= javascript_include_tag:defaults%>'.But **/javascripts/widgets/tooltip.js **不包含在任何位置,并且::defaults包括** jquery jquery_ujs jquery.prettyPhoto **。我不明白它从哪里得到包括。 –

+0

你可以通过你的插件来查看是否有任何插件正在设置config.action_view.javascript_expansions [:defaults]。并且看到它们都不在after_initialize钩子中,它可以覆盖你的application.rb代码初始化的JavaScript默认值。 – Salil

回答

0

好,我找到了答案。

以下是包含在我的应用程序插件:

轨道的小部件,jQuery的(http://github.com/paolodona/rails-widgets/wikis)

一个文件名为core.rb这个插件的轨道的小部件,jQuery的/ lib中/小工具/ 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您responses.Those帮助我得到上面的答案。

感谢, Jignesh

相关问题