2013-06-22 75 views
2

我正在使用Rails 3.2.13。erb in coffeescript(Rails 3.2.13)?

看過這裏的一些帖子後,它看起來像爲了在CoffeeScript中使用erb,你的文件只需要有一個.js.coffee的擴展名,而不是.js.coffee.erb(奇怪)。

但是,我似乎仍然無法得到它的工作。例如,我有一個demo.js.coffee文件如下:

console.log '<%= root_url %>' 

其中,所有的處理之後,似乎產生:

(function() { 
    console.log('<%= root_url %>'); 

    $(function() {}); 

}).call(this); 

正如你所看到的,CoffeeScript的處理,但該局ISN 「T。這是怎麼回事?

+0

改變它'.erb'並報告:-) – gmaliar

+0

@Guy將其更改爲在'demo.js.coffee.erb'結果:'未定義的局部變量或方法「root_url''。這就像'root_url'不能從javascript資源中識別出來... –

+1

我相信這會回答你的問題http://stackoverflow.com/questions/6725629/route-helpers-in-asset-pipeline – omarshammas

回答

6

這是令人困惑的,在某些情況下.erb擴展是必需的,而在某些情況下則不是。我發現,當處理資產目錄下的咖啡腳本文件時,它是必需的,但是,當它隱含在視圖內時。

所以你的情況應該叫demo.js.coffee.erb

的第二個問題是,再培訓局正在應用範圍之外進行評估,所以你需要以下行

'<% url = RailsAppName::Application.routes.url_helpers %>' 
console.log '<%= url.root_path %>' 

類似的問題可以在這裏找到Route helpers in asset pipeline

+0

啊。我忘了JS文件也可以進入views目錄,而不僅僅是資產目錄。 –

+0

在Rails 4中,我必須添加only_path:true來加入'url.root_path(only_path:true)'以避免默認的主機異常。 – shedd