Sono bloccato! xD Ho lavorato a un progetto Rails e sto riscontrando problemi nell'accedere alle mie risorse utilizzando percorsi relativi. Un mio amico sta lavorando sul lato html/css delle cose mentre sto gestendo i controller ei modelli. Il mio amico ha recentemente mi ha dato un batch di file strutturati nel seguente modo:percorsi relativi per l'accesso alle risorse di rotaie
app/assets/images/*.jpg
app/assets/stylesheets/*.css
app/assets/javascripts/*.js
app/assets/fonts/*.* (+some more css files in here)
All'interno della mia cartella app/views/layout, ho un layout con nome final.html.erb che viene utilizzato per tutta la mia webapp. Ho anche 1 pagina (contenuto del corpo HTML) che sto cercando di renderizzare con questo layout in app/views/pages named final_page.html.erb ... il routing necessario è a posto per il caricamento della pagina; tuttavia, carica solo il contesto di final_page.html.erb (nessuna immagine, stile o carattere). Quando vado alla console e scrivo "rails server" e visito localhost: 3000, la pagina si presenta ... lol nudo. La console emette il seguente:
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)
penso che il problema è che sto cercando di accedere ai file utilizzando percorsi relativi. Il mio file di layout si presenta così:
<!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>
Inoltre, all'interno del corpo del mio file final_page.html.erb, provo ad accedere alle immagini utilizzando i percorsi relativi, nonché ... in questo modo:
<img src="../../assets/images/mainImg.jpg" alt="img">
Il mio amico ha scritto la maggior parte di questo html e ha 0 esperienze con i binari. Ho deciso di cambiare le richieste di beni in questo modo:
Da:
<link rel="stylesheet" type="text/css" href="../../assets/stylesheets/style.css">
A:
<%= stylesheet_link_tag "application.css" %>
Da:
<script src="../../assets/javascripts/modernizr.js" type="text/javascript"></script>
A:
<%= javascript_include_tag "application.js" %>
Da:
<img src="../../assets/images/mainImg.jpg" alt="img">
A:
<%= image_tag "mainImg.jpg" %>
questo un po 'aiuta, come il carico di immagini, e molto poco dello stile passa attraverso; tuttavia, è lontano da come dovrebbe essere. Sto pensando che sia perché il mio amico effettua le chiamate relative al loro interno i file di css:
body {
background-image: url(../images/bg.jpg);
background-repeat: repeat;
}
ho provato sostituendo questi con url (<% = asset_path 'bg.jpg' %>) ecc ... ma non ha alcun effetto. Ho provato tante cose e ho letto così tanti post. Mi chiedo se c'è un modo in cui Rails mi permetterà di usare percorsi relativi. Ho provato:
config.assets.enabled = false
ma questo non aiuta ... per favore ... cosa sto facendo di sbagliato? Non penso che il mio amico vorrà smettere di usare percorsi relativi per il suo lavoro, come è il modo in cui fa le cose.Il sito si attiva ben al di fuori di Rails, ma ho bisogno che funzioni con Rails per la mia webapp. Qualsiasi consiglio sarebbe molto apprezzato. Grazie per aver avuto la pazienza di leggere tutto questo.
P.S. Sto usando Ruby 1.9.3 e Rails 3.2.6
Questo in realtà risolto il 50% della problema xD grazie mille! Tuttavia, lo stile è ancora spento. Non sono sicuro se è perché i file CSS stanno usando percorsi relativi o? :(Dovrò andare nei file css e cambiare i percorsi alle immagini a cui si riferisce? Come: body { background-image: url (../ images/bg.jpg); background-repeat: repeat ; } Da url (../ images/bg.jpg) a url (/assets/bg.jpg)? – Orlin
Oh mia parola ... che ha funzionato al 100% ... Ho usato l'url (/ assets/bg.jpg) risolve tutti i riferimenti alle immagini nei file css e ha fatto il trucco !!! Grazie mille COSÌ tanto! – Orlin
Sì. Grazie :) – Orlin