rails 3.1,为什么我的咖啡脚本不起作用?

时间:2011-11-05 18:24:46

标签: ruby-on-rails-3.1 coffeescript

我正在尝试在我的rails 3.1项目中测试咖啡脚本,但它没有在application.js中执行或生成为javascript

我有一个控制器Page,这里是pages.js.coffee:

test = (input) ->
  alert input

test 'hello'

但该警告永远不会在http://127.0.0.1:3000/pages执行, 实际上,application.js只是空的!

这是GemFile,以防它有用:

source 'http://rubygems.org'

gem 'rails', '3.1.0'

# Bundle edge Rails instead:
# gem 'rails',     :git => 'git://github.com/rails/rails.git'

gem 'sqlite3'

gem 'devise', '1.4.8'

gem 'will_paginate', '~> 3.0.2'

#gem 'nested_form', :git => 'git://github.com/fxposter/nested_form.git'

gem "simple_form"

gem 'kaminari'

gem 'foreigner'

gem "cocoon"

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails', "  ~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
end

gem "jquery-rails"

gem 'coffee-script'
gem 'haml'
# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'

group :test do
  # Pretty printed test output
  gem 'turn', :require => false
end

修改

我也添加了这些宝石并安装了它们,但是,咖啡脚本没有被执行

gem 'therubyracer'


gem 'coffee-script-source'
gem 'json'
gem 'execjs'

2 个答案:

答案 0 :(得分:3)

首先:在你的资产组中拥有“coffee-rails”就足够了。较旧的版本在:assets组中有“coffee-script”。

第二:你在哪里保存*.js.coffee个文件?您需要确保它们位于某个位置的“资产”文件夹中。从app/assets/javascripts开始。如果它们不在您的资产文件夹中,则它们不会进入资产管道。

如果您已经这样做,请考虑启动一个新项目并使用默认配置。它应该没有任何麻烦。将工作项目与非工作项目进行比较。

如果所有其他方法都失败了,您是否可以在GitHub上与我们分享您的项目?

答案 1 :(得分:0)

请检查你的config / application.rb,你应该找到这样一个部分:

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
 Bundler.require(*Rails.groups(:assets => %w(development test)))
 # If you want your assets lazily compiled in production, use this line
 #Bundler.require(:default, :assets, Rails.env)

我怀疑您没有在部署时预编译资产,即使您已将其设置为忽略资产宝石。