我提供的javascript文件在请求时自定义。我是通过控制器做到的。我创建了一个模板views / controller_name / custom.js.coffee
首先,我偶然发现咖啡脚本没有在生产中编译,但是通过将两个gems coffee-rails和uglifier移到资产组之外来解决这个问题。
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?
由于
答案 0 :(得分:0)
写一个after_filter:
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_filter),而且它有效。对于after_filter来说,这似乎是一个完美的案例:您的响应主体是JavaScript,并且您希望在将响应发送到客户端之前修改您的响应(通过uglifying)。