为什么我的rails应用程序没有正确响应生产环境中的.js格式?

Doo*_*loo 0 javascript jquery ruby-on-rails render

我有一个非常简单的rails应用程序,它是基于ajax的一些功能.当我在开发环境中使用它时,一切都按预期运行.然而,在生产环境中发生了一些奇怪的事情:当进行ajax调用时,正在呈现HTML(基于HAML)布局而不是js(基于咖啡).

在比较生产和开发中的日志时,很明显我在处理响应的方式上有一些问题,但是我现在已经抓了几个小时而没有任何线索.

假设我的请求是:/software_tags/1/edit.js在我的开发日志中,我可以看到(输出是正确的,我得到了预期的javascript页面):

Started GET "/software_tags/1/edit.js" for 127.0.0.1 at 2012-07-17 16:59:34 -0700
Processing by SoftwareTagsController#edit as JS
  Parameters: {"id"=>"1"}
  Rendered shared/_error_messages.haml (0.1ms)
  Rendered software_tags/_form.haml (4.5ms)
  Rendered software_tags/edit.js.coffee (5.7ms) <---- THIS IS GOOD!
Completed 200 OK in 10ms (Views: 8.1ms | ActiveRecord: 0.4ms)
Run Code Online (Sandbox Code Playgroud)

然而,在我的开发日志中,我看到(输出错误,我得到HTML页面):

Started GET "/software_tags/1/edit.js" for x.x.x.x at 2012-07-18 01:59:54 +0200
Processing by SoftwareTagsController#edit as JS <--- Wouldn't that force the edit.js.coffee to be rendered instead of the edit.haml?
  Parameters: {"id"=>"1"}
  Rendered shared/_error_messages.haml (0.1ms)
  Rendered software_tags/_form.haml (2.8ms)
  Rendered software_tags/edit.haml (3.2ms)      <---- THIS IS WRONG!
Completed 200 OK in 5ms (Views: 3.5ms | ActiveRecord: 0.5ms)
Run Code Online (Sandbox Code Playgroud)

在我的控制器中,编辑操作如下所示:

  def edit
    respond_to do |format|
      format.js
      format.html
      format.json { render json: @software_tag }
    end
  end
Run Code Online (Sandbox Code Playgroud)

但是当我尝试访问json数据时,所有环境中的一切都很好,那么js输出的输出错误可能是什么问题?

编辑:也许我错过了一些相当简单的事情.我仍然无法从我的生产环境中实现正在开发的工作.我正在使用带有Rails 3.2.6的ruby 1.9.3,以及jQuery/jQuery-ujs.基本上,我会改进我的问题:当使link_to remote:true时,我如何强制服务器用javascript文件回答我(并且在respond_to.js块而不是html文件上分支)?

rad*_*ado 5

如果是gem里面:资产组,这个宝石只用于资产目录(在app,vendor,lib中),而不是在视图中.

有三种方法可以正常工作:

  1. 将咖啡栏移到资产之外
  2. 在apllication.rb中取消注释: # Bundler.require(:default, :assets, Rails.env)
  3. 使用gem coffee-views https://github.com/yury/coffee-views