2012-07-11 22 views
7

Do một thiết lập cụ thể, tôi muốn chia các bảng định kiểu đã biên dịch thành hai tệp. Điều này là do (một phần của) CSS là cần thiết cho một ứng dụng Java có thể phân tích cú pháp CSS, nhưng nó có một chút lỗi và không thể xử lý một số css- (hack) -syntax. Bởi vì tôi không thể sửa đổi ứng dụng Java này, tôi chỉ muốn cung cấp nó cho CSS mà nó cần và tôi có thể đảm bảo nó đúng.Đường dẫn tài sản Rails: biên dịch thành nhiều bảng định kiểu

Vì vậy, thông thường đường dẫn nội dung sẽ chỉ tạo ra một tệp '/assets/application-[..].css'. Nó sẽ để cho nó cũng tạo ra '/assets/custom-[..].css', dựa trên một lựa chọn tập tin tôi thực hiện. Điều này vẫn có thể được biên dịch trước.

Có cách nào để thực hiện việc này không? Mặc dù tôi hiểu đây không phải là thiết lập lý tưởng ..

Trả lời

12

Để thông báo cho bạn về các tệp bổ sung mà bạn muốn được biên dịch trước, bạn có thể thêm chúng vào cài đặt config.assets.precompile.

config.assets.precompile += ["other_application.css"] 

Bạn chỉ nhìn thấy application.css trong HTML của bạn bởi vì đó là tập tin duy nhất mà bạn đang kể

<%= stylesheet_link_tag "application" %> 

Nếu bạn có một số custom.css.scss trong thư mục apps/assets/stylesheets của bạn, nó sẽ được biên dịch giống như application.css.

Ví dụ, tôi có thể có

- _common.css.scss 
- application.css.erb.scss 
- other_application.css.erb.scss 

trong app/assets/stylesheets. Ở đầu các tệp không phải một phần, tôi sẽ đặt

@import "common"; 

để bao gồm _common.css.scss. Bây giờ tôi có thể tham khảo biểu định kiểu độc lập với nhau trong bố cục.

<%= stylesheet_link_tag "application" %> 
# or 
<%= stylesheet_link_tag "other_application" %> 
+0

Cảm ơn bạn đã trả lời, nhưng rất tiếc tôi không thể làm cho nó hoạt động. Khi tôi đưa một tệp _common.css.scss vào/app/assets/stylesheets, nó không xuất hiện dưới dạng tệp được biên dịch (tôi sử dụng Heroku và bảng điều khiển Heroku để duyệt các tệp). Ngoài ra, chỉ application.css mới được coi là tệp kê khai. other_application.css không được biên dịch, ngay cả khi tôi đề cập đến nó bằng cách sử dụng stylesheet_link_tag. - update-- Để làm cho other_application.css có sẵn, tôi cần nó để thêm vào config.assets.precompile + =% w (other_application.css) trong production.rb – Roemer

+0

Cảm ơn, tôi đã cập nhật câu trả lời của mình. Tôi đã kiểm tra lại mã ứng dụng của mình và nhận ra rằng tôi đã có tập tin 'config.assets.precompile' với một glob lấy tất cả các tệp từ' app/assets/stylesheets' không có tiền tố là '_'. Xin lỗi vì sự nhầm lẫn; những gì tôi đã nêu trong câu trả lời của tôi ban đầu là đúng cho các ứng dụng của tôi một mình :) – deefour

+0

Cũng đáng để chỉ ra, cài đặt tương tự này được sử dụng cho các tệp JS của bạn, để nhận các tệp bổ sung như 'application.js' để biên dịch trước – deefour

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