2012-11-20 52 views
1

我正在將應用程序從Rails 3.0遷移到Rails 3.1。我改變了所有nessasary配置文件和安裝寶石(在Ryan's screencast的幫助下)。我有幾個佈局,我想爲它們加載不同的腳本。Rails 3.1 - Coffescript不能編譯爲js

我的看法:

佈局/ console.html.erb

<html lang="ru"> 
    <head> 
    ... 
    <%= stylesheet_link_tag "console" %> 
    <%= yield :stylesheets%> 
    <%= javascript_include_tag 'console' %> 
    ... 
    <%= yield :javascripts%> 
    </head> 
</html> 

在我的資產,我創建文件console.js:

資產/ JavaScript的/ console.js

// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD 
// GO AFTER THE REQUIRES BELOW. 
// 
//= require jquery 
//= require jquery_ujs 
//= require_self 
//= require_tree ./console 

此外,我創建的文件夾控制檯與文件這個文件夾裏面:

資產/ Java腳本/控制檯/ users.js.coffee

jQuery -> 
    alert "Test" 

但是當我加載頁面等警報不會出現。

當調試頁我看到的Rails加載這個

<script type="text/javascript" src="/assets/console.js?body=1"></script> 

其中包含:

// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD 
// GO AFTER THE REQUIRES BELOW. 
// 
; 

這:

<script type="text/javascript" src="/assets/console/users.js.coffee ?body=1"></script> 

其中包含:

jQuery -> 
alert "Test" 
; 

我的問題是什麼?我怎樣才能解決這個問題?

UPD:在頁面頭部鏈接:

<head> 
    ... 
    <meta charset="utf-8"> 
    <meta name="csrf-param" content="authenticity_token"> 
    <meta name="csrf-token" content="PAO2QZ6Z3ykmksXnY55dmCehq+i2COXmSlnZWjErFwA="> 
    <link type="image/vnd.microsoft.icon" rel="shortcut icon" href="/favicon.ico"> 
    <link type="text/css" rel="stylesheet" media="screen" href="/assets/console.css?body=1"> 
    <link type="text/css" rel="stylesheet" media="screen" href="/assets/console/console.css?body=1"> 
    <link type="text/css" rel="stylesheet" media="screen" href="/assets/console/pagination.css?body=1"> 
    <link type="text/css" rel="stylesheet" media="screen" href="/assets/console/search-form.css?body=1"> 

    <script type="text/javascript" src="/assets/jquery.js?body=1"></script> 
    <script type="text/javascript" src="/assets/jquery_ujs.js?body=1"></script> 
    <script type="text/javascript" src="/assets/console.js?body=1"></script> 
    <script type="text/javascript" src="/assets/console/users.js.coffee ?body=1"></script> 
</head> 
+0

你的問題是,你的語法都是錯的。 –

+0

@WaleedKhan你能提供正確的解決方案嗎?我無法理解我的錯誤。 – ExiRe

回答

2

更新答:

有符合

<script type="text/javascript" src="/assets/console/users.js.coffee ?body=1"></script> 

一個空間,不應該那裏!

確保文件名users.js.coffee中沒有任何尾隨空格。

原來的答覆:(也不是辦法)

它看起來並不像CoffeeScript中已經解釋了線

jQuery -> 

您是否正確加載jQuery的?請確保您已在的Gemfile

gem 'jquery-rails' 

,你已經運行bundle install

這也可能是值得嘗試的$ ->替代語法,但它不應該有所作爲。

+0

是的,我有這個寶石。 我試着再次運行'bundle install'並使用'$ - >'並沒有幫助。 – ExiRe

+2

如果我沒有弄錯,它看起來好像有一個空間在線 '' 文件名中是否有空格? – Felix

+0

你絕對正確!我只是注意到它(更改文件的名稱後)。 – ExiRe

0

在Rails 3.1上運行時,Rails 3.0應用程序可能會丟失一些代碼。

首先,檢查你是否在你的Gemfile那些寶石:

group :assets do 
    gem 'jquery-rails' 
    gem 'jquery-ui-rails' 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 

    # See https://github.com/sstephenson/execjs#readme for more supported runtimes 
    # gem 'therubyracer', :platforms => :ruby 

    gem 'uglifier', '>= 1.0.3' 
end 

其次,檢查是否這些線路都在配置/ application.rb中:

module SAH2Client 
class Application < Rails::Application 

    ...... 

    # Enable the asset pipeline 
    config.assets.enabled = true 

    # Version of your assets, change this if you want to expire all your assets 
    config.assets.version = '1.0' 
    end 

end