2011-09-28 16 views

Trả lời

41

Style sheets không được bao gồm trong một manifest (trực tiếp theo tên hoặc gián tiếp thông qua require_tree) không được biên dịch trước, do đó sẽ không thể truy cập được trong sản xuất.

Bạn cần thêm trang tính vào danh sách các mục để biên dịch trước trong ứng dụng môi trường.rb.

 
config.assets.precompile += ['960sm.css'] 

Và sau đó truy cập vào nó trong giao diện:

 
stylesheet_link_tag('960sm') 
+0

Cảm ơn bạn đã giúp tôi sắp xếp đường dẫn nội dung. – hagope

+3

Hoạt động tốt, đã giúp tôi rất nhiều, nhưng mô tả trên application.css cho một ý tưởng khác về cách hoạt động: .../* * Đây là tệp kê khai sẽ tự động bao gồm tất cả các bảng định kiểu có sẵn trong thư mục này * và bất kỳ thư mục con nào. Bạn được tự do thêm phong cách ứng dụng vào tệp này và chúng sẽ xuất hiện ở số * đầu tệp được biên dịch, nhưng thường tốt hơn là tạo tệp mới cho mỗi phạm vi kiểu. * = require_self * = require_tree. */ –

+0

điều này đã giúp tôi ... sau một vài giờ tìm kiếm giải pháp – justcode

4

Thay vì quản lý một danh sách các file CSS, bạn có thể thích chỉ cần điều chỉnh mở rộng bằng cách thêm .scss vào tên tập tin.

Do đó, 960sm.css sẽ trở thành 960sm.css.scss.

Điều này không được phá vỡ bất kỳ thứ gì dưới dạng CSS hợp lệ là SCSS hợp lệ.

+1

Đó là tốt nhưng hãy nhớ * không * để thêm .scss trong danh sách biên dịch trước. "Luôn luôn chỉ định [tên tệp được biên dịch dự kiến ​​kết thúc bằng .js hoặc .css] (http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets), ngay cả khi bạn muốn thêm tệp Sass hoặc CoffeeScript vào phần biên dịch trước mảng." – AlexChaffee

0

Nếu bạn có rất nhiều tài sản độc lập, sau đó thay vì thêm mỗi người vào danh sách, như thế này

config.assets.precompile += ['960sm.css'] 

bạn có thể muốn chỉ precompile mọi thứ, như thế này:

def precompile?(path) 
    %w(app lib vendor).each do |asset_root| 
    assets_path = Rails.root.join(asset_root, 'assets').to_path 
    return true if path.starts_with?(assets_path) 
    end 
    false 
end 

# Precompile all assets under app/assets (unless they start with _) 
Rails.application.config.assets.precompile << proc do |name, path| 
    starts_with_underscore = name.split('/').last.starts_with?('_') 
    unless starts_with_underscore 
    path = Rails.application.assets.resolve(name).to_path unless path # Rails 4 passes path; Rails 3 doesn't 
    precompile?(path) 
    end 
end 

(Dựa trên số code in the Rails Guide.)