Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails视图中实时缩小coffeescript_Ruby On Rails_Coffeescript - Fatal编程技术网

Ruby on rails Rails视图中实时缩小coffeescript

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

我提供了一个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-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。