2012-02-20 34 views
20

Cách chính xác/đường ray/phương pháp hay nhất để gọi phương tiện cụ thể (ví dụ: in, màn hình, v.v) css nếu sử dụng đường dẫn nội dung Rails 3.1? Tôi biết điều này đã được yêu cầu trước đó, nhưng tất cả các giải pháp tôi đã nhìn thấy có vẻ rất hacky và không phải là giải pháp Rails tao nhã mà tôi mong đợi.Cách chính xác để gọi css phương tiện truyền thông trong Rails 3.1 đường ống tài sản

Theo như tôi có thể nói, phương pháp được đề xuất là để thiết lập thư mục stylesheets như sau:

assets 
-stylesheets 
--application.css 
--application-print.css 
--print 
---custom-print.css 
--screen 
---custom-screen.css 

nội dung của application.css là

/* 
*= require_self 
*= require_tree ./screen 
*/ 

nội dung dành cho ứng dụng print.css là

/* 
*= require_self 
*= require_tree ./print 
*/ 

sau đó bao gồm nội dung sau trong bố cục

<%= stylesheet_link_tag 'application', media = 'screen, projection' %> 
<%= stylesheet_link_tag 'application-print', media = 'print' %> 

OK, cho đến nay rất tốt.

NHƯNG, trong trường hợp tùy chỉnh print.css của tôi đang được áp dụng trên màn hình và không áp dụng css cho đầu ra được in.

Ngoài ra, cách tiếp cận này dường như ảnh hưởng đến hình ảnh được gọi từ css. tức là thay vì tìm kiếm hình ảnh trong tài sản/hình ảnh, hiện tại, bạn đang tìm kiếm hình ảnh trong nội dung/biểu định kiểu/màn hình. Có thể có một cái gì đó khác đang xảy ra ở đây, vì nó có vẻ là chỉ javascript css bị ảnh hưởng. Tôi sẽ làm một số kiểm tra và báo cáo lại.

Vì vậy, câu hỏi của tôi là, bạn đang xử lý css phương tiện truyền thông cụ thể trong đường dẫn nội dung Rails như thế nào? Và tôi đang làm gì sai?

Cảm ơn bạn đã dành thời gian!

Trả lời

16

Sự cố là cú pháp cho cuộc gọi phương thức.

stylesheet_link_tag 'application', :media => 'screen, projection' 
stylesheet_link_tag 'application-print', :media => 'print' 

Trong mã của bạn, bạn đã được gán cho một biến địa phương gọi là media

+0

doh! cảm ơn bạn! –

+4

Bạn cũng có thể sử dụng '@media print {...}' (IE9 +). Ngoài ra, để sản xuất, bạn có thể cần phải thêm 'config.assets.precompile + =% w (application-print.css)' vào 'config/production.rb' (như tôi đã làm cho Heroku). – manafire

+0

@fullsailor, đây là nơi nào? trong 'application.html.erb'? – mmcrae

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