Brak obrazków

Witam, mam problem, ponieważ gdy przekopiowałem mój styl ze zwykłej strony do strony pisanej w RoR nie wczytuje mi obrazów, nie wiem co jest problemem, zdjęcia wkleiłem do public/images/ oto przykładowa deklaracja

body {
line-height : 125%;
font-family : Arial, Helvetica, Sans-Serif;
font-size : 12px;
font-weight : normal;
letter-spacing : normal;
padding : 0;
color : #fff;
background-color : #000;
background-image:url(‘public/images/bg.png’);
background-repeat : repeat-y;
background-position:center top;
margin: 0;
}

nawet jeśli podam bezpośrednio w pliku html deklaracje tła nic się nie zmienia ;/

zmiana public/images/ na samo images/ też nic nie zmienia

Myślę, że zamiast
powinno buyć . Bez public.

jest napisane, że usunięcie public nic nie zmienia ;/ nie wiem w czym jest problem bo np w stylu stronki powitalnej deklaracja wygląda identycznie ;/

=> Booting WEBrick
=> Rails 3.0.0 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2010-09-24 19:45:25] INFO WEBrick 1.3.1
[2010-09-24 19:45:25] INFO ruby 1.8.7 (2010-01-10) [i386-mingw32]
[2010-09-24 19:45:25] INFO WEBrick::HTTPServer#start: pid=4788 port=3000

Started GET “/home/index.html” for 127.0.0.1 at Fri Sep 24 19:45:27 +0200 2010
Processing by HomeController#index as HTML
Rendered home/index.html.erb within layouts/home (3.0ms)
Completed 200 OK in 29ms (Views: 28.0ms | ActiveRecord: 0.0ms)

Started GET “/stylesheets/public/images/bg.png” for 127.0.0.1 at Fri Sep 24 19:4
5:35 +0200 2010

ActionController::RoutingError (No route matches “/stylesheets/public/images/bg.
png”):

Rendered C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-3.0.0/lib/action_dispatch/mid
dleware/templates/rescues/routing_error.erb within rescues/layout (1.0ms)

Started GET “/stylesheets/images/header.jpg” for 127.0.0.1 at Fri Sep 24 19:45:3
6 +0200 2010

ActionController::RoutingError (No route matches "/stylesheets/images/header.jpg
"):

Rendered C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-3.0.0/lib/action_dispatch/mid
dleware/templates/rescues/routing_error.erb within rescues/layout (2.0ms)

Started GET “/stylesheets/images/blizz.gif” for 127.0.0.1 at Fri Sep 24 19:45:36
+0200 2010

ActionController::RoutingError (No route matches “/stylesheets/images/blizz.gif”
):

Rendered C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-3.0.0/lib/action_dispatch/mid
dleware/templates/rescues/routing_error.erb within rescues/layout (1.0ms)

Started GET “/stylesheets/images/rails.png” for 127.0.0.1 at Fri Sep 24 19:45:36
+0200 2010

ActionController::RoutingError (No route matches “/stylesheets/images/rails.png”
):

Rendered C:/Ruby/lib/ruby/gems/1.8/gems/actionpack-3.0.0/lib/action_dispatch/mid
dleware/templates/rescues/routing_error.erb within rescues/layout (1.0ms)

w konsoli otrzymuje takie komunikaty, nie wiem tylko czemu on nie widzi tych obrazków skoro one tam są

Próbowałeś ‘/images’ ? / na początku wymusza bezwzględną ścieżkę.

tak, dziwi mnie to, że identyczna deklaracja w pliku public/index.html (ten ktory pojawia sie w kazdym nowym projekcie) działa dobrze, jak przeniosę do mojego stylu to już nie ;/

@edit

a więc znalazłem błąd, wina tak jak by po mojej stronie, on szukał ścieżki /stylesheets/public/images/header.jpg zamiast public/images/header.jpg musiałem wsadzić katalog /images do stylesheets i wszystko gra ;p temat do zamknięcia/usunięcia.

Po pierwsze primo nie zaczynamy zdania od “a więc”, tudzież używamy wielkich liter i piszemy krótsze zdania :slight_smile:

Po drugie primo nie kopiuj nigdzie obrazków. Mają zostać w public/images.

Problem na który się natknąłeś to brak zrozumienia jak działają ścieżki w przeglądarkach. Plik index.html znajduje się w public. Public to “/” czyli katalog główny. Jeśli strona umieszczona jest w root i w swoim kodzie zawiera ‘images/bg.png’ to przeglądarka interpretuje to jako: “/” + “images/bg.png”.

Stylesheet znajduje się w katalogu /stylesheets. Z punktu widzenia przeglądarki to jeśli w CSS podasz ścieżkę “images/bg.png” to przeglądarka szuka “/stylesheets/” +
“images/bg.png”.

Rozwiązaniem jest podanie w CSS ścieżki “/images/bg.png”. Przeglądarka wie wtedy, że nie chodzi Ci o ścieżkę WZGLĘDEM tej w którym jest CSS ale ABSOLUTNĄ (bo zaczyna się od “/”).

Popróbuj używać “/” w różnych plikach CSS oraz html i zobacz w logach czego dopomina się przeglądarka.

Czy aby na pewno będzie to działać, jeśli aplikacja jest w podkatalogu (example.com/myapp/)? Wtedy “/images/qwerty.png” odwoła się do “example.com/images/qwerty.png” zamiast do “example.com/myapp/images/qwerty.png”, czyż nie?

Czy aby na pewno będzie to działać, jeśli aplikacja jest w podkatalogu (example.com/myapp/)? Wtedy “/images/qwerty.png” odwoła się do “example.com/images/qwerty.png” zamiast do “example.com/myapp/images/qwerty.png”, czyż nie?[/quote]
Tak. Między innymi dlatego railsy idą teraz w stronę takich rozwiązań jak compass, gdzie można łatwo poprawić ścieżkę w zależności od tego jak aplikacja jest serwowana. Od railsów 3.1 stylesheet’y i javascripty będą już domyślnie w katalogu app/ i dopiero przy odpaleniu generowane do public/