2011-10-05 54 views
8

Dường như, trong đường ray 3.1, tất cả các tệp css.scss được hợp nhất thành 1 tệp. Tôi phải làm gì nếu tôi muốn một tệp css chỉ được đưa vào một số chế độ xem? Giống như nếu tôi muốn admin.css.scss được bao gồm trong trang quản trị và tệp main.css.scss trong trang chủ/about/contact.Rails3.1 - Làm cách nào để bao gồm các tệp css trong một số chế độ xem nhưng không bao gồm các tệp khác?

Trả lời

13

Trong Rails 3.1, tất cả các stylesheets của bạn sẽ được sáp nhập vào application.css nếu application.css của bạn trông giống như:

/* 
* This is a manifest file that'll automatically include all the stylesheets available in this directory 
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at 
* the top of the compiled file, but it's generally better to create a new file per style scope. 
*= require_self 
*= require_tree . 
*/ 

Đó là do sự * = require_tree.

Bạn có thể yêu cầu một kiểu cụ thể với:

*= require main 

Nếu không, trong cách bố trí của bạn, bạn viết:

%head 
= yield :head 

và trong trang của bạn:

= content_for :head do 
= stylesheet_link_tag 'stylesheet' 
+0

% head và yield: head bit làm gì? –

+0

Trong Haml: % đầu = lợi nhuận: đầu Sẽ tạo thẻ trong HTML và chèn mã từ trang khác thông qua sản lượng – damienbrz

3

Xem thêm:
http://guides.rubyonrails.org/layouts_and_rendering.html

(xem phần 2.2.14 'Finding Layouts')

bạn có thể có bố trí khác nhau cho các bộ điều khiển khác nhau!

ví dụ: trong ứng dụng/lượt xem/bố cục bạn có thể có application.haml và admin.haml và trong ứng dụng/bộ điều khiển bạn sẽ có một admin_controller.rb

Đường ray sẽ cố gắng tìm bố cục có cùng tên với bộ điều khiển.

Bạn cũng có thể ghi đè lên hành vi này và xác định bố trí sử dụng, ví dụ .:

class ItemsController < ApplicationController 
    layout "admin" 
    #... 
end 

Sau đó, bạn sẽ tạo ra một file admin.scss dưới app/stylesheets cho bố trí mới này!

+0

+1 để chỉ định phần nào cần xem, thay vì bán cùng một liên kết cũ. – ahnbizcad

+0

cảm ơn. có, đó là một trang loooong, và họ đã thay đổi số phần – Tilo

10

Hãy để tôi thêm một giải pháp làm việc cho tôi.

Như đã đề cập trong một câu trả lời trước bạn có thể muốn loại bỏ các tuyên bố

*= require_tree . 

từ application.css tập tin.

tôi vẫn tiếp tục tuyên bố

*= require_self 

cho kiểu được chia sẻ trên các ứng dụng.

Sau đó, trong application.html tập tin của tôi, tôi sử dụng những điều khoản sau đây để chỉ bao gồm các application.csscontroller.controller_name.css style sheets trong giao diện.

= stylesheet_link_tag "application", controller.controller_name 
= javascript_include_tag "application", controller.controller_name 

Như bạn có thể thấy các tác phẩm tương tự cho tệp JavaScript.

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