2012-08-02 71 views
2

什麼是存儲和引用JS的網站管理部分的最佳做法?javascript_include_tag管理部分

目前,我有一個引用了很多JS(包括vendor和app)的application.js。我想將一些引用移動到另一個文件中,以便在用戶不是admin時不加載(不必要地)。

我在尋找以下行爲:

  1. 如果用戶不是管理員,通過//= require_tree .
  2. 如果用戶是管理員加載的application.js包括/assets/javascripts下的所有文件的一切,一切都加載一個普通用戶會加載。另外,加載一些特定的JS。我不知道在哪裏存儲JS,因爲我不希望它被require_tree

被拾起在哪裏存儲代碼,以及如何調用它的任何建議,將不勝感激你。

回答

2

也許你可以做這樣的事情。創建一個admin_application.js文件,該文件需要管理員用戶需要的所有.js代碼(不包括require_tree指令),並且保持不變的application.js,該文件具有非管理員用戶的所有要求和內容。
如果它們共享一個通用佈局,那麼在標題標籤內部放置一些邏輯來處理這兩種情況是很容易的。例如:

application.html.erb

<header> 
    <% if current_user.is_admin? %> 
    <%= javascript_include_tag "admin_application" %> 
    <% else %> 
    <%= javascript_include_tag "application" %> 
    <% end %> 
</header> 

我認爲這是一個簡單的和公平的方法來你的問題。

+0

我應該將管理文件保存在一個單獨的目錄中嗎?我應該在非管理JS內調用require樹嗎? – Dean 2012-08-03 02:27:56

+0

如果您想要更多控制,請不要使用require_tree指令並手動要求所有您需要的JavaScript。這很容易出錯,但是它可以工作。 – MurifoX 2012-08-03 11:43:13

+0

MurifoX,這不起作用。 我有幾乎相同的問題,當你把資產/ JavaScript的軌道js自動加載它。有沒有更好的解決方案來解決這個問題? thnx – drmwndr 2012-08-02 20:57:23