Ruby on rails Rails视图中实时缩小coffeescript
我提供了一个javascript文件,该文件在被请求时定制。我是通过一个控制器来完成的。我创建了一个模板views/controller\u name/custom.js.coffee 首先,我偶然发现了一个问题,即咖啡脚本没有在生产中编译,但通过将两个gems coffee rails和uglifier移出资产组,这一问题得到了解决Ruby on rails Rails视图中实时缩小coffeescript,ruby-on-rails,coffeescript,Ruby On Rails,Coffeescript,我提供了一个javascript文件,该文件在被请求时定制。我是通过一个控制器来完成的。我创建了一个模板views/controller\u name/custom.js.coffee 首先,我偶然发现了一个问题,即咖啡脚本没有在生产中编译,但通过将两个gems coffee rails和uglifier移出资产组,这一问题得到了解决 group :assets do gem 'sass-rails', '~> 3.2.3' gem 'mysql2' gem 'yui-comp
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'mysql2'
gem 'yui-compressor'
end
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
现在这部分工作,但脚本不是由uglifier处理。我的问题是,如何缩小以这种方式提供的javascript
谢谢写一个后过滤器:
class TestController < ApplicationController
respond_to :js
after_filter :uglify, :only => :custom
def custom
@ivar = 'Custom'
end
def uglify
response.body = Uglifier.new.compile(response.body)
end
end
实际上我已经尝试过了,因为我从来没有动态生成过JavaScript,也从来没有编写过after_过滤器,而且效果很好。这似乎是after_筛选器的完美案例:您的响应主体是JavaScript,您希望在将响应发送到客户端之前对其进行修改。编写after_筛选器:
class TestController < ApplicationController
respond_to :js
after_filter :uglify, :only => :custom
def custom
@ivar = 'Custom'
end
def uglify
response.body = Uglifier.new.compile(response.body)
end
end
实际上我已经尝试过了,因为我从来没有动态生成过JavaScript,也从来没有编写过after_过滤器,而且效果很好。这似乎是一个完美的后过滤器:您的响应主体是JavaScript,您希望在将响应发送到客户端之前对其进行修改。您正在进行多少定制?为什么不将大部分脚本变成静态资产,并为脚本在运行时的动态响应注入一些变量。为什么不将所有代码放在assets/javascripts文件夹中?然后制作rake资产:预编译您正在进行多少定制?为什么不将大部分脚本变成静态资产,并为脚本在运行时的动态响应注入一些变量。为什么不将所有代码放在assets/javascripts文件夹中?然后让rake资产:预编译对我来说不起作用。过滤器运行后,Uglifier返回一个uglified脚本,但我仍然在浏览器和redis缓存中获取原始脚本。或者当我重新排序缓存页面/after_过滤器调用时,但uglify步骤未被缓存!使用在缓存操作和self.response\u body=Uglifier.new.compileresponse.body之后安装的around\u过滤器,我可以使其工作=uglified代码在缓存中,缓存响应不会调用uglify。对我不起作用。过滤器运行后,Uglifier返回一个uglified脚本,但我仍然在浏览器和redis缓存中获取原始脚本。或者当我重新排序缓存页面/after_过滤器调用时,但uglify步骤未被缓存!使用在缓存操作和self.response\u body=Uglifier.new.compileresponse.body之后安装的around\u过滤器,我可以让它工作=uglified代码在缓存中,缓存响应不会调用uglify。