2012-01-16 28 views
15

Tôi đang nâng cấp một ứng dụng đường ray với nhiều bản định kiểu SCSS để sử dụng đường dẫn nội dung và cần bao gồm một số biến và kết hợp toàn cục cho mỗi tệp.Biến SCSS hiện có trong đường ống tài sản đường ray?

Thêm nhiều @import chỉ thị ở phía trên cùng của mỗi tập tin không phải là rất khô, vì vậy tôi muốn làm một cái gì đó như thế này:

# application.css 
/* 
*= require variables 
*= require mixins 
*= require_tree . 
*/ 

này không làm việc tất nhiên, bởi vì các biến là không tồn tại trên các tệp. Bất cứ ai biết làm thế nào để đạt được điều này?

Trả lời

34

Giá trị mặc định cú pháp biểu hiện là không đủ mạnh để cung cấp cho bạn Sass hữu ích có tính năng giống như các biến dùng chung, mixins vv Thay vào đó, bạn nên:

  1. Rename application.css để application.scss (hoặc application.css.scss trong Rails 4 hoặc sớm hơn)
  2. Thay vì sử dụng vô nghĩa

    /* 
    *= require variables 
    *= require mixins 
    *= require_tree . 
    */ 
    

    , bây giờ bạn nên sử dụng

    @import "variables"; 
    @import "mixins"; 
    @import "blah"; // import each SCSS file in your project like this. 
    

    Điều này sẽ đảm bảo bạn có đầy đủ lợi ích của các biến và mixin trong suốt dự án và bạn được giữ như DRY như Sas s cho phép.

+0

Đồng ý. Đây là những gì tôi đã làm quá. – Zubin

+2

Một sự khó chịu đáng chú ý với giải pháp này là tất cả các css của bạn kết thúc trong một tập tin. Ý tưởng với application.css là nó vẫn tải từng tệp css riêng biệt (trong dev) có thể giúp với QA khi bạn biết mọi tệp được bao gồm trong lưu lượng mạng của bạn. (Cấp bằng sass bạn vẫn có thể kiểm tra các vấn đề và xem tập tin .scss đến từ các bình luận được SASS thêm vào) – gcoladarci

+1

Tôi tin rằng bạn có thể có bản đồ nguồn đầu ra của đường ray (http://fonicmonkey.net/2013/03/25/ native-sass-scss-source-map-support-in-chrome-and-rails /), vì vậy bạn có thể kiểm tra trực tiếp các tệp nguồn. –

2

Dường như không thể thực hiện được. Đã kết thúc trước mỗi tệp với @import 'includes/all'; và bao gồm mọi thứ khác từ includes/all.css.scss.

5

Chỉ cần nhập tệp cần thiết từ mỗi tệp Scss hoặc Sass dường như đã hoạt động đối với tôi. Ví dụ, tôi có một tập tin colors.scss trong đó bao gồm một số các hằng số như thế này:

$black: #222; 

tôi yêu cầu nó trong application.css tôi manifest cùng với một số tác phẩm khác:

/* 
*= require colors 
*= require buttons 
*/ 

Trong nút của tôi. tập tin css.scss, tôi chỉ đơn giản là thực hiện điều này để tránh các lỗi:

@import "colors"; 
+0

Tài liệu ở đây cũng có thể hữu ích: https://github.com/rails/sass-rails/ –

+2

Điều đó không giải quyết được sự cố. Mục đích là để tránh sự cần thiết phải nhập chúng từ mỗi tệp scss. Câu trả lời của bạn cũng giống như câu trả lời của tôi. Thanks anyway :) – Zubin

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