ruby-on-rails-3.1 – Rails 3.1,从资产管道中排除JS文件
我知道这已有一百万个问题,但我无法理解.
我想在资产管道中包含我的大部分JS文件,但我有一些我想有条件地加载(或仅在某些页面上).这些是大而复杂的文件,95%的用户永远不会使用它们,所以我宁愿不为每个用户加载它们.一组JS文件用于日历,放在: app/assets/javascripts/calendar 所以我的清单设置为只包含顶级目录(并排除日历子目录): //= require jquery //= require jquery_ujs //= require jquery-ui //= require_directory . 我的config / environments / production.rb: # Compress JavaScripts and CSS config.assets.compress = true # Don't fallback to assets pipeline if a precompiled asset is missed config.assets.compile = false # Generate digests for assets URLs. config.assets.digest = true # This following config is left over from previous Rails app,# so not sure if it's now unnecessary ... # Disable Rails's static asset server # In production,Apache or nginx will already do this config.serve_static_assets = false 在视图中,我使用Ryan Bates的nifty_layout手动包含日历文件: javascript "calendar/date.js","calendar/jquery.weekcalendar.js","calendar/custom.js" 我已经尝试过在开发和生产中进行预编译 – 文档不清楚我应该在哪里做,但它看起来像生产. 当我运行页面时,我得到了这个: ActionView::Template::Error (calendar/date.js isn't precompiled) 我不希望它预编译.我想手动加载它. (实际上,可以在除了创建的主应用程序.js之外的文件中进行预编译,但我不知道该怎么做.) 解决方案是什么? 谢谢! 解决方法
好吧,我没有意识到这是如何工作的,但我想我已经明白了.
将要手动加载的文件添加到config / environments / production.rb,如下所示: config.assets.precompile += %w( calendar/*.js jquery_calendar/*.css ) 我认为这只是将它们折叠到application.js和application.css中,但显然不是 – 它将它们编译为单个文件. 然后,您可以按照传统方式调用文件(在本例中,使用nifty_layout): javascript "calendar/date.js","calendar/custom.js" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |