在Rails视图中实时缩小coffeescript

时间:2012-02-10 16:07:03

标签: ruby-on-rails coffeescript

我提供的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?

由于

1 个答案:

答案 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)。