Utknąłem! xD Pracowałem nad projektem Rails i mam problemy z dostępem do zasobów przy użyciu względnych ścieżek. Mój znajomy pracuje nad stroną html/css, podczas gdy ja zajmuję się kontrolerami i modelami. Niedawno mój przyjaciel dał mi paczkę plików uporządkowanych w następujący sposób:ścieżki względne dostępu do zasobów szyn
app/assets/images/*.jpg
app/assets/stylesheets/*.css
app/assets/javascripts/*.js
app/assets/fonts/*.* (+some more css files in here)
ciągu mojego katalogu app/views/układy, mam układ o nazwie final.html.erb który jest używany dla całej mojej webapp. Mam również 1 stronę (zawartość treści HTML), którą próbuję renderować za pomocą tego layoutu w app/views/pages o nazwie final_page.html.erb ... konieczne jest uruchomienie routingu strony; jednak ładuje tylko kontekst strony final_page.html.erb (bez obrazów, stylów ani czcionek). Kiedy wchodzę na konsolę i wpisuję "serwer szyny" i odwiedzam localhost: 3000, strona pokazuje ... nagiego lola. Konsola wyprowadza następujące:
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)
Myślę, że problemem jest to, że staram się uzyskać dostęp do plików za pomocą ścieżek względnych. Mój plik układ wygląda następująco:
<!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>
Również w ciele moim final_page.html.erb pliku, próbie uzyskania dostępu do obrazów przy użyciu ścieżek względnych, jak również ... tak:
<img src="../../assets/images/mainImg.jpg" alt="img">
Mój znajomy napisał większość tego html i ma 0 doświadczenia w pracy z szynami. Postanowiłem zmienić żądania aktywów tak:
Od:
<link rel="stylesheet" type="text/css" href="../../assets/stylesheets/style.css">
Do:
<%= stylesheet_link_tag "application.css" %>
Od:
<script src="../../assets/javascripts/modernizr.js" type="text/javascript"></script>
do:
<%= javascript_include_tag "application.js" %>
Od:
<img src="../../assets/images/mainImg.jpg" alt="img">
Do:
<%= image_tag "mainImg.jpg" %>
Ten nieco pomaga, jak załadować zdjęcia, i bardzo mało stylizacji przychodzi poprzez; jest jednak daleko od tego, jak powinien wyglądać. Myślę, że to dlatego, że mój przyjaciel dzwoni względnych w obrębie samych plików css:
body {
background-image: url(../images/bg.jpg);
background-repeat: repeat;
}
próbowałam zastępując je z adresu URL (<% = asset_path 'bg.jpg' %>) etc ... ale nie ma to żadnego wpływu. Próbowałem wielu rzeczy i czytałem tak wiele postów. Zastanawiam się, czy istnieje sposób, że Railsy pozwolą mi używać względnych ścieżek. Próbowałem:
config.assets.enabled = false
ale to nie pomaga ... proszę ... co robię źle? Nie sądzę, że mój przyjaciel będzie chciał przestać używać względnych ścieżek do swojej pracy, tak jak on to robi.Strona uruchamia się poza Railsami, ale potrzebuję jej do pracy z Railsami dla mojej aplikacji internetowej. Każda rada byłaby bardzo doceniana. Dziękuję za cierpliwość za przeczytanie tego wszystkiego.
P.S. Używam Ruby 1.9.3 i Rails 3.2.6
To rzeczywiście rozwiązał 50% problem xD wielkie dzięki! Jednak stylizacja jest nadal wyłączona. Nie jestem pewien, czy to dlatego, że pliki css używają ścieżek względnych, czy? :(Czy będę musiał przejść do plików css i zmienić ścieżki do obrazów, do których się odnosi? body { background-image: url (../ images/bg.jpg); background-repeat: repeat ; } Od adresu url (../ images/bg.jpg) do adresu URL (/assets/bg.jpg)? – Orlin
Moje słowo ... które działało w 100% ... Użyłem adresu URL (/ assets/bg.jpg) ustalić dla wszystkich odniesień obraz w plikach cSS i to załatwiło sprawę !!! Thank you so so so much! – Orlin
Tak. Dziękuję :) – Orlin