Tôi có một dự án Rails 3.1 với đường ống nội dung hoạt động tốt. Vấn đề là tôi cần phải tham khảo hình ảnh trong Sass của tôi, nhưng Rails tính toán URL hình ảnh. (Điều này đặc biệt quan trọng trong việc sản xuất, nơi Rails gắn băm Git của ảnh để filename của nó để phá cache.)Làm cách nào để sử dụng hình ảnh tham chiếu trong Sass khi sử dụng Rails 3.1?
Ví dụ, trong app/assets/stylesheets/todos.css.scss
:
.button.checkable { background-image: url(/assets/tick.png); }
Khi tôi triển khai (hoặc chạy rake assets:precompile
) , tệp app/assets/images/tick.png
được di chuyển đến public/assets/tick-48fe85c0a.png
hoặc tương tự. Điều này phá vỡ CSS. This post làm hai gợi ý:
- không sử dụng các đường ống dẫn tài sản cho hình ảnh - thay vì đặt chúng trong
public/images/
và tham khảo trực tiếp - sử dụng ERB cho CSS của bạn và để cho Rails làm việc ra các URL hình ảnh.
Số 1 chắc chắn là một khả năng, mặc dù điều đó có nghĩa là tôi không bị chặn truy xuất bộ nhớ cache trên hình ảnh của mình. Số 2 là vì tôi đang sử dụng Sass chứ không phải ERB để xử lý các tệp.
Chỉ cần chỉnh sửa nhỏ: Bạn cần sử dụng {asset_type} -url hoặc -path, không phải _path, trong sass hoặc scss (dấu gạch ngang thay vì dấu gạch dưới) (xem https://github.com/rails/sass-rails#features) – ndbroadbent