2012-04-08 18 views
9

समस्यारेल 3.1 संपत्ति को हल नहीं

मैं जो मैं Railscast video: "Upgrading to rails 3.1" से 3.1.4 निम्नलिखित निर्देशों में नवीनीकृत एक रेल 3.0.4 एप्लिकेशन है।

अब मैं संपत्ति के साथ समस्याओं के कारण वे समाधान नहीं होता है, इस तरह सर्वर लॉग में संदेश दे रही है:

Started GET "/assets/application.css" for 127.0.0.1 at 2012-04-08 03:57:13 -0500 
Served asset /application.css - 404 Not Found (15ms) 

ActionController::RoutingError (No route matches [GET] "/assets/application.css"): 
Rendered /usr/local/rvm/gems/ruby-1.9.2-p318/gems/actionpack-3.1.4/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (14.3ms) 

Started GET "/assets/application.js" for 127.0.0.1 at 2012-04-08 03:57:13 -0500 
Served asset /application.js - 404 Not Found (35ms) 

ActionController::RoutingError (No route matches [GET] "/assets/application.js"): 

इन फ़ाइलों assets निर्देशिका में हैं:

$ ls app/assets/*/application* 
app/assets/javascripts/application.js app/assets/stylesheets/application.css 

और इसमें यह है:

$ cat app/assets/javascripts/application.js 
//= require jquery 
//= require jquery_ujs 
//= require_self 
//= require_tree . 
$ cat app/assets/stylesheets/application.css 
/* 
*= require_self 
*= require_tree . 
*/ 

मुझे लगता है कि सबकुछ कॉन्फ़िगर किया गया है। यहाँ मैं फ़ाइलों में से कुछ हिस्सा डाल:

  • Gemfile, शामिल संपत्ति जवाहरात की आवश्यकता:

    config.assets.enabled = true 
    config.assets.version = '1.0' 
    
  • development.rb:

    config.assets.compress = false 
    config.assets.debug = true 
    

    group :assets do 
        gem 'sass-rails', '~> 3.1.3' 
        gem 'coffee-rails', '~> 3.1.0' 
        gem 'uglifier' 
    end 
    
  • application.rb, संपत्ति सक्षम किया गया

  • अंत में ... application.html.erb लेआउट:

    <%= stylesheet_link_tag 'application' %> 
    <%= javascript_include_tag 'application' %> 
    

स्टेज

मैं विकास वातावरण में अब हूँ।

टेस्ट

  1. मैं http://localhost:3000/assets/images/rails.png अनुरोध करते हैं, यह No route matches [GET] "/assets/images/rails.png" फेंकता है, लेकिन फाइल नहीं है:

    $ ls app/assets/images/rails.png 
    app/assets/images/rails.png 
    
  2. तब मैं rake assets:precompile निष्पादित करें:

    $ bundle exec rake assets:precompile 
    /usr/local/rvm/rubies/ruby-1.9.2-p318/bin/ruby /usr/local/rvm/gems/ruby-1.9.2-p318/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets 
    /usr/local/rvm/rubies/ruby-1.9.2-p318/bin/ruby /usr/local/rvm/gems/ruby-1.9.2-p318/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets 
    

    $ rails s 
    => Booting WEBrick 
    => Rails 3.1.4 application starting in development on http://0.0.0.0:3000 
    => Call with -d to detach 
    => Ctrl-C to shutdown server 
    /usr/local/rvm/gems/ruby-1.9.2-p318/gems/actionpack-3.1.4/lib/action_dispatch/http/mime_type.rb:101: warning: already initialized constant PDF 
    [2012-04-08 04:53:06] INFO WEBrick 1.3.1 
    [2012-04-08 04:53:06] INFO ruby 1.9.2 (2012-02-14) [i686-linux] 
    [2012-04-08 04:53:06] INFO WEBrick::HTTPServer#start: pid=16702 port=3000 
    
    Started GET "/assets/images/rails.png" for 127.0.0.1 at 2012-04-08 04:53:14 -0500 
    Served asset /images/rails.png - 404 Not Found (38ms) 
    
    ActionController::RoutingError (No route matches [GET] "/assets/images/rails.png"): 
    
    Rendered /usr/local/rvm/gems/ruby-1.9.2-p318/gems/actionpack-3.1.4/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (125.2ms) 
    

तो क्या गलत है: एन, सर्वर (rails s) और फिर से अनुरोध एक छवि (rails.png) निष्पादित?, क्या मैं कुछ गलत कर रहा हूं?

+0

साथ रखने के लिए सुझाव है कि यह केवल उत्पादन मोड में है? क्या आपने 'बंडल निष्पादन रेक संपत्तियां चलाई हैं: प्रीकंपाइल '? इसके अलावा, क्या आपके पास स्पॉकेट लाइब्रेरी शामिल है? – pjumble

+0

@pjumble अभी तक नहीं, क्या यह आवश्यक है भले ही मैं विकास के माहौल में हूं? – Israel

+4

मुझे लगता है कि आप उत्पादन मोड में थे, लेकिन नहीं, विकास मोड में आपको संपत्तियों को प्रीकंपाइल करने की आवश्यकता नहीं है। यदि आप URL से '/ images /' को हटाते हैं तो क्या छवि काम करती है? ('http: // localhost: 3000/संपत्ति/rails.png') – pjumble

उत्तर

2

जहां तक ​​मुझे पता है कि सभी प्रीकंपील्ड संपत्तियां संपत्ति फ़ोल्डर में स्थानांतरित की जाती हैं।

इसका मतलब है कि जावास्क्रिप्ट, स्टाइलशीट्स और छवियों की सामग्री localhost:3000/assets में संयुक्त हो जाएगी।

तो अगर आप localhost:3000/assets/images/rails.png के लिए खोज यह app/assets/images/images/rails.png में स्थित होना चाहिए। वजह 404.

अपने निर्देशिका साफ रखने के लिए मैं एप्लिकेशन/संपत्ति/images/और उन्हें बिंदु में अपने सभी छवियों asset_path('rails.png')