Rails guide on how to use the asset pipeline यहां पूरी सच्चाई को बिल्कुल नहीं बताता है। इसे कहते हैं:
आप, अपने संबंधित संपत्ति फाइलों के अंदर एक नियंत्रक के लिए किसी भी जावास्क्रिप्ट या सीएसएस अद्वितीय रखना चाहिए के रूप में इन फ़ाइलों को तो बस इस तरह के <% = javascript_include_tag पैरामीटर के रूप में लाइनों के साथ इन नियंत्रकों के लिए लोड किया जा सकता [: नियंत्रक] %> या <% = stylesheet_link_tag पैराम्स [: नियंत्रक]%>।
अब, आप सकता है के रूप में वे सुझाव देते हैं करते हैं और प्रत्येक नियंत्रक के लिए विशिष्ट शैली लोड है, लेकिन के रूप में वे बॉक्स से बाहर का सुझाव यह काम नहीं करता। आपको कुछ चीजों का उल्लेख करने की उपेक्षा करना चाहिए।
आप फ़ोल्डर में हर दूसरे परिसंपत्ति लोड होगा application.css, जो जगह में छोड़ दिया से //= require_tree .
निर्देश दूर करने के लिए की जरूरत है,। इसका अर्थ यह है कि प्रत्येक पृष्ठ उपयोगकर्ता.css लोड करेगा, और यदि आपने नियंत्रक-विशिष्ट स्टाइलशीट लाइन को उनके उदाहरण में जोड़ा है, तो यह नियंत्रक स्टाइलशीट को दो बार लोड करेगा।
आपको व्यक्तिगत फ़ाइलों को प्रीकंपाइल करने के लिए रेल को बताना होगा। डिफ़ॉल्ट रूप से, सभी * .css फ़ाइलों के अलावा application.css को प्रीकंपलर द्वारा अनदेखा किया जाता है।
# in environments/production.rb
# either render all individual css files:
config.assets.precompile << "*.css"
# or include them individually
config.assets.precompile += %w(users.css static_pages.css)
अंत में, के रूप में रेल गाइड द्वारा निर्देश दिए, तो आप अपने स्टाइलशीट की तरह कुछ देखने के लिए भी शामिल है को बदलने की जरूरत होगी:: इसे ठीक करने के आप अपने config संपादित इस तरह कुछ करने के लिए क्या करना होगा
<%# this would now only load application.css, not the whole tree %>
<%= stylesheet_link_tag :application, :media => "all" %>
<%# and this would load the controller specific file %>
<%= stylesheet_link_tag params[:controller] %>
हालांकि, ऊपर सही मायने में सबसे अच्छा अभ्यास नहीं हो सकता। निश्चित रूप से, कभी-कभी आप व्यक्तिगत स्टाइलशीट चाहते हैं, लेकिन अधिकतर समय आप शायद अपने स्टाइल बंडल की सेवा करना चाहते हैं ताकि क्लाइंट एक फाइल कैश कर सके। इस प्रकार, संपत्ति पाइपलाइन बॉक्स के बाहर काम करती है।
इसके अलावा, यदि आप अपने नियंत्रक विशिष्ट स्टाइलशीट में केवल ओवरराइड नियम जोड़ना चाहते हैं, तो आप गेट के बाहर शैलियों का लोड-ऑर्डर-विशिष्ट टेंगल बना रहे हैं। यह ... शायद अच्छा नहीं है।
// in application.css (or some other commonly loaded file)
background-color: $color1;
// in users.css.scss
body.controller-users {
background-color: $color2;
}
// and so on...
फिर अपने लेआउट में
, जैसे शरीर वर्ग के लिए नियंत्रक नाम जोड़ने,:
<body class="controller-<%= params[:controller] %>">
एक बेहतर दृष्टिकोण शैलियों, कुछ इस तरह नियंत्रक शीट में नाम स्थान के लिए हो सकता है
इस तरह, आपकी शैलियों को नामस्थान द्वारा हल किया जाता है, न केवल ऑर्डर लोड करें। इसके अलावा आप इस समाधान के साथ आगे बढ़ सकते हैं और यदि आप चाहें तो अलग नियंत्रक-विशिष्ट स्टाइलशीट लोड कर सकते हैं, या आप इसके बारे में भूल सकते हैं और बस सबकुछ application.css में संकलित करने दें क्योंकि यह डिफ़ॉल्ट रूप से होगा। सभी शैलियों को प्रत्येक पृष्ठ के लिए लोड किया जाएगा, लेकिन केवल नियंत्रक-विशिष्ट शैलियों को लागू किया जाएगा।
पृष्ठ (कार्रवाई?) इसका विशिष्ट संस्करण: http://stackoverflow.com/questions/15708794/page-specific-css-with-rails-app, जिसे तब http://stackoverflow.com/questions/6167805/ के डुप्लिकेट के रूप में चिह्नित किया गया था उपयोग-रेल-3-1-कहां-करते-आप-डाल-अपना-पृष्ठ-विशिष्ट-जावास्क्रिप्ट-कोड (सही IMHO)। –
संबंधित: http://stackoverflow.com/questions/15708794/page-specific-css-with-rails-app –