5

Mọi người đều biết cách sử dụng stylesheet_link_tag đến liên kết với biểu định kiểu, nhưng tôi muốn thực sự bao gồm toàn bộ biểu định kiểu trong một trang. (Không, điều này thường không phải là một thực hành tuyệt vời, nhưng nó có ý nghĩa trong bối cảnh này.)Trong Rails, làm cách nào để bao gồm một biểu định kiểu từ đường ống nội dung dưới dạng thẻ <style>?

stylesheet_include_tag không tồn tại, và đồng nghiệp là một kẻ xấu xa hơn Rails nhiều hơn tôi nói là không có một cách đơn giản.

Câu hỏi:
là nó thực sự có thể tận dụng các đường ống dẫn tài sản vẫn nhúng nội dung của một CSS hoặc JavaScript tập tin (tổng hợp từ Sass hoặc CoffeeScript!) Vào một cái nhìn .haml? Làm sao?


Added cho rõ ràng:

Tôi muốn cho bố trí của tôi để có thể bao gồm một cái gì đó như:

= stylesheet_link_tag "base" 
= stylesheet_embed_tag "page-specific-styles/foo" 

Và có điều này tạo ra HTML dọc theo những dòng:

<link rel="stylesheet" href="/base.css" /> 
<style type="text/css">.foo { color: red; }</style> 

Cập nhật

Có thể sử dụng Sass trong Haml nếu bạn set your initalizer correctly, nhưng tôi dường như không thể @import "foo" từ bối cảnh này, nơi foo.css.sass là một stylesheet trong các đường ống tài sản. Lưu ý rằng @import "compass" (giả sử bạn có đá quý la bàn) hoạt động.

này trông giống như (Haml):

%style 
    :sass 
    @import "foo" 

Rails cho một lỗi mà "foo" không thể được tìm thấy, mặc dù nó tuyên bố được tìm kiếm trong app/assets/stylesheets (đó là nơi foo.css.sass cuộc sống).

Vì vậy, điều này cảm thấy gần hơn, nhưng vẫn không hoàn toàn ở đó.

+0

Nếu tôi hiểu chính xác bạn muốn đưa CSS thực vào chế độ xem '.haml'. – David

+0

@David Có. Tôi sẽ mở rộng câu hỏi để làm rõ điều này. –

+0

bạn sẽ không xem xét có thể sử dụng khối 'content_for: head' có thể hoặc tôi nghĩ bạn có thể gọi nó là' <% = stlyesheet_include_tag 'some_stylesheet'%> 'nhưng ý tôi là' .haml' tôi tin bạn sẽ không ' t có các thẻ ruby ​​nhúng làm cho nó chỉ '= stylesheet_include_tag 'some_stylesheet' Tôi có thể sai. Nhưng có hai phương pháp mà tôi đã gợi ý có hai bạn. Hy vọng nó giúp ích. – David

Trả lời

0

Nếu tôi hiểu câu hỏi của bạn một cách chính xác,

bạn có thể thêm mã css của bạn vào một tập tin xem ruby ​​bình thường (như là một phần), say styles.html.erb

và sau đó thêm rằng vào trang của bạn trên bất kỳ điều kiện u muốn , Tôi nghĩ đó là cách đơn giản nhất để nhìn vào nó.

cổ vũ

+0

Phải, điều đó cũng xảy ra với tôi và nó sẽ đơn giản nhất, nhưng ** chỉ khi ** Tôi không cần sử dụng các tính năng của Sass như mở rộng các tệp Sass khác, như tôi đã hiểu. –

+0

Và như xa như mã tái sử dụng đi, rõ ràng điều này sẽ không cắt nó. –

2

từ http://blog.phusion.nl/2011/08/14/rendering-rails-3-1-assets-to-string/:

YourApp::Application.assets.find_asset('api.css').source

trong Haml

%style 
    =raw YourApp::Application.assets.find_asset('foo.css').source 

hãy cẩn thận:

Tôi tin rằng điều này đòi hỏi biên soạn tài sản trong sản xuất, có thể được khá tốn kém .

+0

Tuyệt vời! Và không có nghi ngờ một số bộ nhớ đệm hoàn toàn có thể loại bỏ hiệu suất trên không –