簡體   English   中英

Rails 3.1-Coffescript無法編譯為js

[英]Rails 3.1 - Coffescript doesn't compile to js

我正在將應用程序從Rails 3.0遷移到Rails 3.1。 我更改了所有nessasary配置文件並安裝了gems(借助於Ryan的截屏視頻 )。 我的布局很少,我想為它們加載不同的腳本。

我有看法:

layouts / console.html.erb

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

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

資產/javascripts/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

我也創建了文件夾控制台,並在此文件夾內添加了文件:

資產/javascripts/console/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>

更新的答案:

一行中有一個空格

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

那不應該在那里!

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

原始答案:(不是解決方案)

看起來coffeescript沒有解釋這行

jQuery ->

您是否正確加載jQuery? 確保你有

gem 'jquery-rails'

在您的Gemfile中 ,並且您已經運行了bundle install

嘗試$ ->的替代語法也可能值得,盡管它不會有所作為。

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

首先,檢查您的Gemfile中是否包含這些gem:

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

其次,檢查這些行是否在config / 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM