2011-09-05 86 views
9

我只有我這樣的如何在rails 3.1中顯示控制器特定的javascript?

assets 
    javascripts 
    products 
     --product.js 
     --productValidate.js 
    store 
     --store.js 

我想在我的application.js要添加的project.js和projectValidate.js作爲資產的一部分資產的文件夾結構管內襯時,在產品的控制器動作是調用存儲控制器中的動作時調用store.js。我如何在rails 3.1中實現這一點?

回答

1

據我所知資產pipilene是應該預編譯的東西。所以...從概念上講,它應該立即取得所有文件,並只返回一個複製文件,這對緩存很有用。

你可以在一些地方保存出來OD資產(在puplic,較舊的Rails做,例如),並將其納入到不同電流控制器和行動

+1

我剛剛看到了railscast 279,其中Ryan提到v可以通過在鏈接中使用require_directory而不是require_tree來指定要添加application.js文件的文件夾。我想知道是否有類似的方法來添加控制器特定的JS。 – Rahul

+0

Ryan提到你想編譯的文件夾它不在運行時:) – fl00r

4

由於拉胡爾已經提到的,是的application.js預編譯和每個動作都一樣。 所以它不依賴於特定的控制器。 Application.js應該包含所有(或大部分)操作所需的JavaScript。

但是,您可以使用嵌套佈局來擴展您的應用程序佈局。讓我們假設以下結構:

... app/view/layouts/application.html.erb ... 

<html> 
<head> 
    <%= javascript_include_tag 'application' %> 
    <%= yield :javascripts %> 
    <%= stylesheet_link_tag 'application' %> 
    <%= yield :stylesheets %> 
</head> 
<body> 
    <%= yield %> 
</body> 
</html> 

和:

... app/view/layouts/products.html.erb ... 

<% content_for :stylesheets do %> 
    <%= stylesheet_include_tag 'products' %> 
<% end %> 
<% content_for :javascripts do %> 
    <%= javascript_include_tag 'products' %> 
<% end %> 
<%= render :template => 'layouts/application' %> 

所以,你只需要在產品,文件添加/需要您的樣式表和JavaScript的。 注意,這裏的所有代碼應該被看作是僞代碼,我沒有測試它。

信息摘自"official" Render-Guide

+0

這也是我使用的。但是我把javascript標籤放在''標籤的正前方。 – Victor

+2

如果你想成爲一個好公民,你應該在結束標記''之前放置javascript標記。 –

1

This is what I am working on現在彌合之間的Rails 3.1資產管道和Jammit的差距。

我還沒有提供任何文檔,因爲我認爲它正在開發中。 但this is它基本上應該允許你這樣做:

# config/initializers/pakunok.rb 
# Define the dependencies between Rails assets: 
require 'pakunok' 
Pakunok::Pakunok.current.configure do 
    asset('products/product.js').needs('products/productValidate.js') 
end 

,然後在你的佈局,你只需要做一個包括。所有相關的文件將自動被包括:

# app/views/layouts/application.html.erb 
<%= include_javascripts %> 

請參閱規格,以瞭解哪些寶石可以做。 注意:它仍在開發中並且寶石本身將在以後分割成多個。

對於要支持任何特定的使用情況,請submit issues我保證努力工作來實現這些的時候我有時間:)

+0

這看起來很有前途。我會試一試,讓你知道它。感謝名單.. – Rahul

相關問題