2010-09-20 10 views
5

क्या कोई भी डिफ़ॉल्ट स्टाइलशीट निर्देशिका/सार्वजनिक/स्टाइलशीट को रेल/सीएसएस में सार्वजनिक/सीएसएस में बदलना चाहेगा?रेल में डिफ़ॉल्ट स्टाइलशीट डीआईआर बदलें

मैं एक चर config.stylesheets_dir = '/css'

यह हालांकि काम नहीं किया बुलाया पाया।

मुझे पता है कि मैं <%= stylesheet_link_tag '/css/mystyle.css' %> कर सकता हूं लेकिन अगर कोई बेहतर तरीका है तो मैं उत्सुक हूं।

उत्तर

3

जावास्क्रिप्ट और स्टाइलशीट पथ पूरी तरह से रेल में dehardcoded नहीं थे 3. इन रास्तों बंदर पैच करने के लिए आप की जरूरत है (जो की सभी परिणामों के साथ) को ओवरराइड करने के निजी विधि:

module ActionView::Helpers::AssetTagHelper 
    private 
     def compute_stylesheet_paths(*args) 
      expand_stylesheet_sources(*args).collect { |source| compute_public_path(source, 'stylesheets', 'css', false) } 
     end 
end 

और additionaly इस एक अगर तुम इसका उपयोग करें:

def stylesheet_path(source) 
    compute_public_path(source, 'stylesheets', 'css') 
    end 
1

वैकल्पिक रूप से, मैं यही कर रहा हूं। मैं एक आवरण asset_tag है कि इस तरह इस्तेमाल किया जा सकता बनाने के लिए:

<%= asset_tag 'mystyle', :css %> 
<%= asset_tag 'mycode', :js %> 

और फिर मैं application_helper में परिभाषित:

module ApplicationHelper 

    # here is where you define your paths 
    # in this case, paths will be '/css/mystyle.css' and '/js/mycode.js' 
    def asset_path(asset, type) 
    return "/css/#{asset}.css" if type == :css 
    return "/js/#{asset}.js" if type == :js 
    end 

    def asset_tag(asset, type) 
    return stylesheet_link_tag asset_path(asset, type) if type == :css 
    return javascript_include_tag asset_path(asset, type) if type == :js 
    end 

end 

इस तरह से आप किसी भी तरह से संपत्ति रास्तों को बदल सकते हैं आप चाहते हैं और यह हमेशा आगे संगत होगा।

+2

मुझे यकीन नहीं है कि यह क्यों डाउनवॉट किया गया था। यह एक और स्पष्ट समाधान है और कम हैकी है। – Schrockwell

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