2012-12-29 188 views
0

我很好奇Rails包含.js文件的方式。 從資產管道協助,我很好奇存儲在view中的.js文件。 例如,如果您想將一個AJAX調用應用於PostsController中名爲like的操作,您只需將like.js.erb中的相關AJAX代碼放置在posts視圖文件夾中即可。然後,當用戶調用操作like時,javascript被自動觸發。Rails包括.js文件

我的問題是

  1. 難道是正確的JavaScript文件名匹配某些動作調用操作時自動叫什麼名字?
  2. 如果我想在某個視圖中包含一個與任何操作不對應的JavaScript文件,我該怎麼辦?只需將其包含在應用程序清單中? 更具體地說,我現在有tag-autocomplete.js.erbviews/post。我是否將它移動到assets文件夾,並將其包含在application.css

謝謝。

回答

0
  1. 是的,雖然我沒有立即看到如果你有like.js.erb和like.html.erb會發生什麼。看起來其中一個或另一個將被選中,並且可能是任意的。

  2. 我通常會在腳本標記中嵌入JavaScript。如果它真的只能用於這種觀點,那是合理的。另一方面,application.js被緩存,並且可以節省帶寬,以便在那裏放置任何內容。但是,由於您在詢問涉及模板的事情,因此我認爲緩存是不可取的。對此,我說你應該儘量減少使用JS中的模板。有時它是有道理的,但要小心。

(FYI:this是哪裏的相關功能的核心定義。)

+0

這不是任意的,雖然,對不對?控制器將有一個用於指定視圖是js文件的動作的respond_to塊。如果兩個視圖都存在,那麼控制器的動作中指定的視圖將會觸發,除非我錯了。 – John

+0

Rails使用Accept請求頭來確定哪些格式可以接受並用於調用第一個匹配的響應者。因此,您在respond_to塊中定義format.js,format.html等的順序可能會影響Rails選擇的順序。 –

+0

我只關心隱式渲染,因爲顯式渲染似乎與問題不相關。對於隱式渲染,據我所知它仍然是任意的,但這對於顯式渲染很有意義。 – tehgeekmeister