2012-07-29 13 views
6

मैं अटक गया हूँ! एक्सडी मैं रेल परियोजना पर काम कर रहा हूं और मुझे सापेक्ष पथों का उपयोग करके अपनी संपत्ति तक पहुंचने में परेशानी हो रही है। मेरा एक दोस्त एचटीएमएल/सीएसएस पक्षों पर काम कर रहा है जबकि मैं नियंत्रकों और मॉडलों को संभालने में कामयाब रहा हूं। मेरे दोस्त ने हाल ही में मुझे निम्नलिखित की संरचना भी फ़ाइलों का एक बैच दिया:रेल संपत्तियों तक पहुंचने के लिए सापेक्ष पथ

app/assets/images/*.jpg 
app/assets/stylesheets/*.css 
app/assets/javascripts/*.js 
app/assets/fonts/*.* (+some more css files in here) 

मेरे एप्लिकेशन/विचारों/लेआउट निर्देशिका में, मैं एक लेआउट नामित final.html.erb जो अपने पूरे webapp के लिए प्रयोग किया जाता है है। मेरे पास 1 पेज (एचटीएमएल बॉडी कंटेंट) भी है जो मैं इस लेआउट के साथ अंतिम_पृष्ठ.html.एआरबी नामक एप/व्यू/पेजों में प्रस्तुत करने की कोशिश कर रहा हूं ... पृष्ठ को लोड करने के लिए आवश्यक रूटिंग जगह पर है; हालांकि, यह केवल final_page.html.erb (कोई चित्र, स्टाइल, या फोंट) के संदर्भ को लोड करता है। जब मैं कंसोल पर जाता हूं और "रेल सर्वर" टाइप करता हूं और लोकलहोस्ट पर जाता हूं: 3000, पेज दिखाता है ... नग्न लॉल। सांत्वना निम्नलिखित आउटपुट:


Started GET "/" for 127.0.0.1 at 2012-07-28 21:15:02 -0700 
Connecting to database specified by database.yml 
Processing by PagesController#final_page as HTML 
    Rendered pages/final_page.html.erb within layouts/final (8.4ms) 
Completed 200 OK in 82ms (Views: 81.0ms | ActiveRecord: 0.0ms) 


Started GET "/assets/stylesheets/style.css" for 127.0.0.1 at 2012-07-28 21:15:04 -0700 

ActionController::RoutingError (No route matches [GET] "/assets/stylesheets/style.css"): 
    actionpack (3.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call' 
    actionpack (3.2.6) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call' 
    railties (3.2.6) lib/rails/rack/logger.rb:26:in `call_app' 
    railties (3.2.6) lib/rails/rack/logger.rb:16:in `call' 
    actionpack (3.2.6) lib/action_dispatch/middleware/request_id.rb:22:in `call' 
    rack (1.4.1) lib/rack/methodoverride.rb:21:in `call' 
    rack (1.4.1) lib/rack/runtime.rb:17:in `call' 
    activesupport (3.2.6) lib/active_support/cache/strategy/local_cache.rb:72:in `call' 
    rack (1.4.1) lib/rack/lock.rb:15:in `call' 
    actionpack (3.2.6) lib/action_dispatch/middleware/static.rb:62:in `call' 
    railties (3.2.6) lib/rails/engine.rb:479:in `call' 
    railties (3.2.6) lib/rails/application.rb:220:in `call' 
    rack (1.4.1) lib/rack/content_length.rb:14:in `call' 
    railties (3.2.6) lib/rails/rack/log_tailer.rb:17:in `call' 
    rack (1.4.1) lib/rack/handler/webrick.rb:59:in `service' 
    /usr/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service' 
    /usr/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run' 
    /usr/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread' 


    Rendered /var/lib/gems/1.9.1/gems/actionpack-3.2.6/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (2.0ms) 

मुझे लगता है कि समस्या यह है कि मैं संबंधित पथ का उपयोग कर फ़ाइलों तक पहुँचने की कोशिश कर रहा हूँ है। मेरे लेआउट फ़ाइल इस तरह दिखता है:

<!doctype html> 
<html class="no-js"> 
<head> 
<meta charset="utf-8"> 
<meta name="viewport" content="width=device-width,initial-scale=1"> 
<meta name="viewport" content="width=device-width"> 
<title>:: Final ::</title> 
<link rel="stylesheet" type="text/css" href="../../assets/stylesheets/style.css"> 
<link href="../../assets/stylesheets/desktop.css" rel="stylesheet" type="text/css" media="only screen and (min-width:769px) and (max-width:1000px)"> 
<script src="../../assets/javascripts/modernizr.js" type="text/javascript"></script> 
</head> 
<body> 
    <%= yield %> 
</body> 
</html> 

इसके अलावा, मेरी final_page.html.erb फ़ाइल के मुख्य भाग में, मैं भी संबंधित पथ का उपयोग कर छवियों का उपयोग करने की ... इसलिए की तरह का प्रयास करें:

<img src="../../assets/images/mainImg.jpg" alt="img"> 

मेरे दोस्त ने इस एचटीएमएल में सबसे अधिक लिखा है, और उसके पास रेल के साथ काम करने का 0 अनुभव है।

से::

<link rel="stylesheet" type="text/css" href="../../assets/stylesheets/style.css"> 

करने के लिए:

<%= stylesheet_link_tag "application.css" %> 

से:

<script src="../../assets/javascripts/modernizr.js" type="text/javascript"></script> 

करने के लिए:

<%= javascript_include_tag "application.js" %> 
01 मैं इतनी तरह की संपत्ति के लिए अनुरोध बदलने का फैसला किया

से:

<img src="../../assets/images/mainImg.jpg" alt="img"> 

करने के लिए:

<%= image_tag "mainImg.jpg" %> 

यह कुछ हद तक छवियों भार के रूप में, मदद करता है, और स्टाइल की बहुत कम के माध्यम से आता है, हालांकि, यह किस तरह दिखने वाला है उससे दूर है। मैं सोच रहा हूँ यह सीएसएस खुद को फ़ाइलों के भीतर क्योंकि मेरे दोस्त रिश्तेदार कॉल करता है:

body { 
    background-image: url(../images/bg.jpg); 
    background-repeat: repeat; 
} 

मैं यूआरएल के साथ इन की जगह (<% = asset_path 'bg.jpg'%>) आदि की कोशिश की है ... लेकिन इसका कोई प्रभाव नहीं है। मैंने इतनी सारी चीजों की कोशिश की है, और इतनी सारी पोस्ट पढ़ी हैं। मैं सोच रहा हूं कि क्या कोई तरीका है कि रेल मुझे सापेक्ष पथों का उपयोग करने की अनुमति देगी। मैंने कोशिश की है:

config.assets.enabled = false 

लेकिन इससे मदद नहीं मिलती है ... कृपया ... मैं क्या गलत कर रहा हूं? मुझे नहीं लगता कि मेरा दोस्त अपने काम के लिए सापेक्ष पथों का उपयोग करना बंद कर देगा, क्योंकि यह चीजें करता है।साइट रेल के बाहर अच्छी तरह से आग लगती है, लेकिन मुझे अपने वेबपैप के लिए रेल के साथ काम करने की ज़रूरत है। किसी भी सलाह की काफी सराहना की जाएगी। यह सब पढ़ने के लिए धैर्य रखने के लिए धन्यवाद।

पीएस मैं रूबी 1.9.3 का उपयोग कर रहा हूं, और रेल 3.2.6

उत्तर

6

/assets/style.css/assets/stylesheets/style.css और इतने पर उपयोग करने का प्रयास करें।

अगर वहाँ इस तरह के संरचना होती है:

app 
    assets 
    stylesheets 
    javascripts 

फिर app/assets में फ़ाइलों तक पहुँच पाने के लिए या app/assets/any_folder में आप पथ /assets/file उपयोग करना चाहिए।

अपडेट किया गया

यहाँ की कोशिश:

body { 
    background-image: url(bg.jpg); 
    background-repeat: repeat; 
} 

या:

body { 
    background-image: url(/assets/bg.jpg); 
    background-repeat: repeat; 
} 
+0

यह वास्तव में का 50% हल समस्या एक्सडी बहुत बहुत धन्यवाद! हालांकि, स्टाइल अभी भी बंद है। मुझे यकीन नहीं है कि ऐसा इसलिए है क्योंकि सीएसएस फ़ाइलें सापेक्ष पथ का उपयोग कर रही हैं या? :(क्या मुझे सीएसएस फाइलों में जाना होगा और उन छवियों के पथों को बदलना होगा जो इसे संदर्भित करते हैं? जैसे: शरीर { पृष्ठभूमि-छवि: url (../ images/bg.jpg); पृष्ठभूमि-दोहराना: दोहराना ; } url (//ets/bg.jpg) से url (/assets/bg.jpg) से? – Orlin

+0

ओह मेरे शब्द ... जिसने 100% काम किया ... मैंने यूआरएल (/ संपत्ति/bg.jpg) सीएसएस फाइलों में सभी छवि संदर्भों के लिए ठीक करें और यह चाल है !!! बहुत बहुत धन्यवाद! – Orlin

+1

हां। धन्यवाद :) – Orlin

4

रेल 3.1 नई एसेट पाइपलाइन की शुरुआत की। मैं सिफारिश करेंगे तो आप इस से अधिक पढ़ें: http://guides.rubyonrails.org/asset_pipeline.html

अपने अनुप्रयोग/विचारों/लेआउट/application.html.erb फ़ाइल में, सुनिश्चित करें कि आप इस किया है:

<%= stylesheet_link_tag "application", :media => "all" %> 

अपने अनुप्रयोग/संपत्ति में/स्टाइलशीट/application.css फ़ाइल, सुनिश्चित करें कि आप इस लाइन कर दिया है:

*= require_tree . 

(यह सुनिश्चित होगा कि आप अनुप्रयोग/आस्तियों/styl में है कि किसी भी सीएसएस फ़ाइलें esheets निर्देशिका अपने सीएसएस फ़ाइल में

आपके आवेदन के लिए उपलब्ध) हो जाएगा तो आप सिर्फ यह आपके एप्लिकेशन/आस्तियों/छवियों निर्देशिका में छवियों संदर्भ के लिए कर सकते हैं:

background-image: url(bg.jpg); 
+1

किसी अन्य निर्देशिका में फ़ॉन्ट्स के बारे में क्या? –

+0

फोंट के लिए, मुझे लगता है कि आपको इस लाइन को config/application.rb में जोड़ने की आवश्यकता है: config.assets.paths << Rails.root.join ("ऐप", "संपत्ति", "फोंट") – calasyr

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