2012-12-26 125 views
3

我遷移應用程序到Rails 3下 - 我已經在一些地方見過建議 - 不工作:javascript_include_tag:默認不起作用

<%= javascript_include_tag :defaults %> 

在我而言,它擴展爲此:

<script src="/assets/defaults.js" type="text/javascript"></script> 

......據我所知,這導致404的:不應該默認爲包括一個名爲「defaults.js」的文件;它應該包含一些基本的東西,比如prototype.js和application.js。

請注意,在我的情況下,以下工作正常。這只是我寧願使用官方推薦的方式,如果可能的話:

<%= javascript_include_tag :prototype %> 
<%= javascript_include_tag :application %> 

我正在運行Rails 3.2.8與紅寶石1.9.3。

我做不是在我的config/application.rb(任何形式)中有以下行。要遷移到Rails 3,我創建了一個新的Rails 3應用程序,並且使用了application.rb中作爲一個起點:

config.action_view.javascript_expansions[:defaults] = %w(foo.js bar.js) 

在應用程序/資產/ JavaScript的,我有:

Util.js 
application.js 
controls.js 
dragdrop.js 
effects.js 
prototype.js 

。 ..和一些特定於我的應用程序的東西。

回答

4

由於Rails 3.1,它使用資產管道。這意味着你需要改變你的資產管理。

你有一個assets/javascripts/application.rb文件,其中包含這樣的事情:

//= require jquery 
//= require jquery_ujs 
//= require_tree . 

看來你有jQuery的,jquery_ujs並在Java腳本庫中的所有其他文件。最後一行你不需要在這個文件中做任何事情。你只需要包含應用程序文件在您的視圖和軌將管理一切:

<%= javascript_include_tag "application" %> 

這正是與樣式一樣的東西。

然後在生產環境中,資源(圖像,樣式表,JavaScript)將被編譯和縮小以提高效率。

我建議你閱讀更多關於here

希望這有助於

+0

使用<%= javascript_include_tag「應用程序」%>和有用... thakns – harsh4u

+0

來到這裏有類似問題的排序,雖然我沒有像你描述這裏是什麼文件。也許它在Rails 3.2中再次消失... – Trejkaz

+1

不,它仍然存在於Rails 3.2和Rails 4中。我真的建議你使用assets pipeline! –