2012-02-17 46 views
0

有幾種方法,包括在Rails相關控制資產:DRY MVC聲明最小的控制器特定資產管道

這是不幹燥

一種選擇是在每個頂級視圖add = yield :head in the layoutcontent_for(:head) { ... }如果資產是特定於控制器的,則應僅在每個控制器中指定一次,而不是在每個視圖中指定。當然,這種方法對於視圖特定的資產來說非常棒。

不聲明的第二個選項是add an asset corresponding to the controller name if it exists。我不應該檢查是否存在某種東西,而應該簡單地說(在適當的情況下)它存在並且必須包含它。另外,我不確定是否緩存響應以避免運行時性能下降。從積極的方面來看,這種方法不需要對視圖或控制器進行任何更改,但它可能會引發名稱衝突的可能性,特別是對於舊版模型。第三個選項是include all assets of a type in a single file。瀏覽器不應該下載他們不需要的資源,這會讓調試應用程序變得更加困難。如果總資產規模仍然可以管理,那麼這個選項就可以。

是否有某種方式來聲明包括在不使用很少的代碼打破了MVC模型方式單一控制器特定資產單獨的文件

回答

0

Rails會在控制器特定資產文件的作用只是將代碼到指定的控制器,如果您使用以下包括命令在您的應用程序佈局:

<%= javascript_include_tag params[:controller] %> 
<%= stylesheet_link_tag params[:controller] %> 

我想,如果你這樣做,你需要還做到以下幾點:

  • 還有包括<%= javascript_include_tag :application %><%= stylesheet_link_tag :application %>讓所有的跨控制器資產
  • 檢查怎麼require_tree .可怕ctives工作,以確保控制器特定資產不被通過application.css而事實上<%= stylesheet_link_tag params[:controller] %>您可能需要刪除require_tree .,並直接加載任何跨控制器張成application文件

看到Rails Guide on the Asset Pipeline裝載兩個第2節瞭解更多信息。