簡體   English   中英

Ruby on Rails:資產管道中的JavaScript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM