2012-04-08 36 views
12

Tôi đang gặp sự cố khi tải nội dung được cung cấp để được biên dịch dưới dạng tệp gốc.config.assets.precompile không thêm tài sản nhà cung cấp/đá quý

Tôi muốn có tài sản sau độc lập có sẵn (không đóng gói với assets_ khác:

vendor/gems/neo-viz/app/assets/stylesheets/neo-viz.css.scss 
vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js.coffee 
vendor/gems/neo-viz/app/assets/javascripts/lib/jQuery/jquery-1.6.1.min.js 
vendor/gems/neo-viz/app/assets/javascripts/lib/arbor/arbor.js 

Với dòng sau:.

config.assets.precompile += %w(jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css) 

Chỉ file css là biên dịch sẵn và làm sẵn có Tại sao ?

Ngoài ra, sau khi nhìn thấy câu hỏi này (Including assets in subdirectories with config.assets.precompile in Rails), tôi đã thử:

config.assets.precompile += %w(jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css lib/arbor/arbor.js arbor/arbor.js lib/jQuery/jquery-1.6.1.min.js jQuery/jquery-1.6.1.min.js ) 

Nhưng nó không có sự khác biệt. Ý tưởng?

Trả lời

18

Theo mặc định, Rails chỉ nhìn vào 3 vị trí: app/assets, lib/assets hoặc vendor/assets. Sprockets tìm kiếm các tài sản JS trong thư mục con javascripts. Ví dụ.

app/assets/javascripts/arbor.js 
lib/assets/javascripts/arbor.js 
vendor/assets/javascripts/arbor.js 

Nếu bạn muốn nhìn thấy nơi Rails đang tìm kiếm bạn có thể sử dụng trong giao diện điều khiển: Rails.application.config.assets.paths

Những gì bạn có thể làm là thêm đường dẫn tùy chỉnh của bạn để đường ống:

# @file: config/application.rb 
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts") 

Sau đó, tạo tệp kê khai, trong đó bạn bao gồm các tệp JS của mình:

# @file: /vendor/gems/neo-viz/app/assets/javascripts/neo-viz.js 
//= require lib/jQuery/jquery-1.6.1.min 
//= require lib/arbor/arbor 
//= require neo-viz 

Cuối cùng thêm biểu hiện của bạn:

config.assets.precompile += %w(neo-viz.js)' 

Nếu bạn vẫn muốn thêm chúng separatly, mà tôi không nhìn thấy điểm, tại sao không bao gồm chúng trong một biểu hiện, sau đó bạn sẽ có thêm tất cả con đường có thể tiền tố để Rails biết nơi để xem xét:

# @file: config/application.rb 
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "stylesheets") 
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts") 
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts", "lib", "jQuery") 
config.assets.paths << Rails.root.join("vendor", "gems", "neo-viz", "app", "assets", "javascripts", "lib", "arbor") 

Sau đó, bạn có thể thêm chúng như thế này, vì tài sản bên ngoài một biểu hiện phải được bổ sung vào mảng precompile:

config.assets.precompile += %w(jquery-1.6.1.min.js arbor.js neo-viz.js neo-viz.css) 

Nguồn: 2.1 Asset Organization

+1

Điều này rất hữu ích. Đã lâu rồi, nhưng câu trả lời này nên được kiểm tra là _accepted_ imo. – sargas

Các vấn đề liên quan