2011-10-05 9 views
8

ऐसा लगता है कि, रेल 3.1 में, सभी css.scss फ़ाइलों को 1 फ़ाइल में विलय कर दिया जाता है। अगर मैं कुछ सीएसएस फ़ाइल को केवल कुछ विचारों में शामिल करना चाहता हूं तो मैं क्या करूँ? जैसे कि मैं admin.css.scss को व्यवस्थापक पृष्ठ और main.css.scss में घर/के बारे में/संपर्क पृष्ठ में शामिल करना चाहता हूं।Rails3.1 - मैं कुछ विचारों में सीएसएस फ़ाइलों को कैसे शामिल करूं लेकिन दूसरों को नहीं?

उत्तर

13

रेल 3.1 में, अपने सभी स्टाइलशीट अगर आपके application.css लगता है कि application.css में विलय कर दिया जाएगा।

आप के साथ एक विशिष्ट स्टाइलशीट की आवश्यकता होती है सकते हैं:

*= require main 

अन्यथा, अपने लेआउट में, आपके द्वारा लिखी:

%head 
= yield :head 

और अपने पृष्ठ में:

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

बदल दिया है% सिर और उपज क्या है: हेड बिट्स करते हैं? –

+0

हैम में: % सिर = उपज: सिर एचटीएमएल में टैग उत्पन्न करेगा और उपज के माध्यम से दूसरे पृष्ठ से कोड डालेंगे – damienbrz

3

यह भी देखें:
http://guides.rubyonrails.org/layouts_and_rendering.html

(वर्गों 2.2.14 'फाइंडिंग लेआउट' देखें)

आप अलग अलग नियंत्रकों के लिए विभिन्न लेआउट हो सकता था!

उदा। ऐप/व्यू/लेआउट के तहत आप एप्लिकेशन.हैल और admin.haml और ऐप/नियंत्रकों के तहत आपके पास एक admin_controller.rb

रेल नियंत्रक के समान नाम के साथ एक लेआउट खोजने का प्रयास करेगा।

आप भी इस व्यवहार को ओवरराइड और जो लेआउट इस नए लेआउट के लिए उपयोग करने के लिए, उदा .:/स्टाइलशीट

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

फिर आप एप्लिकेशन के तहत एक admin.scss फ़ाइल बना सकेगी निर्दिष्ट कर सकते हैं!

/* 
* 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 . 
*/ 

यह * = require_tree की वजह से है:

+0

+1 वास्तव में यह निर्दिष्ट करने के लिए कि कौन सा अनुभाग देखने के लिए, वही पुराना लिंक डंप करने के बजाय। – ahnbizcad

+0

धन्यवाद। हां, यह एक लूंग पेज है, और उन्होंने सेक्शन नंबर – Tilo

10

मुझे जोड़ें एक समाधान जो मेरे लिए काम करता था।

के रूप में पिछले एक जवाब में बताया गया कि आप application.css फ़ाइल से

*= require_tree . 

बयान को दूर कर सकते हैं।

मैं आवेदन में साझे की शैलियाँ के लिए

*= require_self 

बयान रखा।

तब मेरे application.html फ़ाइल में मैं केवल application.css और ध्यान में रखते हुए controller.controller_name.css स्टाइल शीट शामिल करने के लिए निम्नलिखित बयानों का इस्तेमाल किया।

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

जैसा कि आप जावास्क्रिप्ट फ़ाइलों के लिए एक ही काम देख सकते हैं।

संबंधित मुद्दे

 संबंधित मुद्दे