我有一個show動作,想要在完成加載後調用一個函數。該函數依賴於正在加載的jQuery以及application.js的其餘部分。Rails 3.2:在show動作中運行CoffeeScript
我嘗試創建show.js.coffee,這個在它:
SomeClass.doSomething '<%= @thing.description %>'
...但show.js.coffee從未加載,因此永遠不會執行。我該怎麼做呢?
我有一個show動作,想要在完成加載後調用一個函數。該函數依賴於正在加載的jQuery以及application.js的其餘部分。Rails 3.2:在show動作中運行CoffeeScript
我嘗試創建show.js.coffee,這個在它:
SomeClass.doSomething '<%= @thing.description %>'
...但show.js.coffee從未加載,因此永遠不會執行。我該怎麼做呢?
也許我錯過了一些東西,但它聽起來像有兩件事:1)需要一些觸發執行的DOM事件,以及2)ERB和控制器上下文(<%= @thing.something %>
)僅在視圖中存在和處理。在這種情況下,聽起來像document.ready是事件。因此,假如你在CoffeeScript中定義SomeClass
其中某個地方,這已經被加載,你show.js.coffee
文件(這是一個JavaScript/DOM上下文中執行)可能是這樣的
$ ->
SomeClass.doSomething $("#thing_something").val()
這有可能是你可以得到再培訓局部分通過在show.html.erb
視圖
<script type="text/coffeescript">
$ ->
SomeClass.doSomething '<%= @thing.description %>'
</script>
不知道這一點加上這樣的事情...
版本的coffee-rails寶石的3.2增加了對JavaScript的支持請求在app/views
目錄中:
此外還支持使用CoffeeScript響應JavaScript請求(使用.js.coffee視圖)。
注:將gem coffee-rails
出group :assets
。
只要撥打things#show
就像正常(remote: true
),並確保有一個名爲app/views/things/show.js.coffee
的文件。
我正在使用rails 3.2.12,並且沒有必要將寶石咖啡欄移動到資產組 – Artur79 2013-02-27 10:00:52
似乎很奇怪,將js/coffee腳本放在views文件夾下。 – 2014-10-05 18:38:53
show.js.coffee文件在哪裏?在你的應用/視圖或應用/資產?你有沒有嘗試將它添加到application.js? – John 2012-03-04 07:48:20
我希望它在app/views/thing/show.js.coffee中。我不知道這是否正確,但這是其他咖啡觀點的意見,所以它也應該在那裏。 – 2012-03-04 08:36:39
澄清,@John(糾正我,如果我是錯誤的蒂姆),這是一個視圖模板使用Rails的內置JS渲染的動作。我不確定'app/assets'之外的'.coffee'文件是否自動獲取ERB;你有沒有嘗試在文件擴展名中加入'.erb'?你有任何的JavaScript錯誤?如果您使用'<%Rails.logger.info'測試'%>'或類似的任何控制檯輸出? – 2012-03-04 09:07:54