![](/img/trans.png)
[英]Linking a Javascript function on a layout that is loaded from the asset pipeline in ruby on rails?
[英]Ruby on rails: javascript in asset pipeline
我是一個完整的菜鳥,我想了解如何在Rails的資產管道中使用javascript。 例如,在哪里放置簡單的$(document).ready在特定視圖中執行。 我已經完成了將代碼放入視圖本身的工作,但是我認為那不是最好的方法。 補充閱讀也將不勝感激,謝謝。
創建一個名為whatever_you_want.js
的新文件。我通常根據視圖或模型將它們拆分。 最終這並不重要,因為資產管道會將其全部處理到一個大文件中。 分成文件就是根據您的喜好和喜好。
因此,在whatever.js
您可以使用$(document).ready
編寫所需的任何JS代碼,而無需..資產管道並不十分在意。.如果編寫的代碼需要$(document).ready
,請使用它。 如果沒有,請不要...
完成使用JS后,默認情況下,Rails將把您在application.js
清單文件中告訴您的所有js文件,並按照您編寫的順序放入一個文件中。
所以看起來像
//= require jquery
//= require jquery_ujs
//= require twitter/bootstrap
//= require_tree .
因此它將首先加載jquery,然后加載jquery ujs,然后引導,然后再加載tree,這是application.js所在的當前目錄
同樣,你只能做
//= require whatever.js
在開發中,默認情況下,您不會看到一個大文件,但是會看到所有文件,因為這樣更容易調試。
部署到生產環境后,根據需要,可以使用rake assets:precompile
通過資產管道對所有資產進行rake assets:precompile
或者您可以擁有一個可以在部署時自動進行預編譯的腳本,例如asset_sync
gem
基本上,您應該將js代碼放在js文件中,並將html代碼放在視圖文件中,因為鏈輪(壓縮js和內容的gem)無法處理不在資產文件/要預編譯的文件上的JS
一些補充讀物讓您感到高興
http://guides.rubyonrails.org/asset_pipeline.html
http://railscasts.com/episodes/279-understanding-the-asset-pipeline
http://blog.55minutes.com/2012/02/untangling-the-rails-asset-pipeline-part-3-configuration/
希望對您有所幫助
多讀幾次您的問題后,我意識到您要問的是“將與特定視圖相關的js代碼放在哪里”
好了,現在您熟悉資產管道,現在可以了解如何使用它:
在您的whatever.js
文件中,您將編寫任何內容。.假設您沒有//=require_tree .
在application.js
,因此它不包含所有js文件,因此您必須在whatever.js
中包含whatever.html.erb
在whatever.html.erb
您可以編寫
<% content_for :head do %>
<%= javascript_include_tag "whatever.js" %>
<% end %>
然后,在您的布局文件(一個內部有<%= yield%>的文件中,轉到html的開頭並寫
<%= yield :head %>
名字頭基本上就是您想要的。
這會告訴Rails,諸如"Hey man, this whatever.js file is for you.. just put it in the :head ok?"
Rails就像"You got it mister!"
這樣,您可以在所需的任何視圖中包含所需的任何js文件。
但是由於您說過您是一個完整的菜鳥,所以我建議保持簡潔,並在所有步驟中包括所有js文件,只需對HTML元素使用唯一的類和ID,就可以了。 很有可能,有些人可能不同意這一點。 但是,由於您說的是完全菜鳥,所以我所說的或他們所說的並不重要。 您更容易理解的是。 所以嘗試一下
所有JavaScript都應位於app / assets / javascript中
您也可以為特定視圖制作單獨的js文件,也可以在application.js文件中編寫js代碼
將此代碼放入布局<%= javascript_include_tag“應用”%>
最后運行rake資產:預編譯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.