2012-01-26 25 views
28

Wygenerowałem rusztowanie w ruby ​​i chcę wstawić obraz tła do każdej strony w witrynie, ale nie jestem pewien, jaki powinien być link do obrazu.Dodawanie obrazu tła w Ruby on Rails 2 w CSS

mój obraz jest w app/assets/images/"dep.jpg"

to, co mam, ale isnt pracy:

background-image:url('../images/dep.jpg'); 
} 

pomocy? dzięki

+0

spróbuj podać dokładną ścieżkę. Coz nawet folder '/ public' ma folder' images' i myślę, że szuka go tam zamiast twojej ścieżki. – uday

+0

To zależy od tego, gdzie znajduje się Twój plik, w stosunku do katalogu ze zdjęciami. '../' mówi, idź o jeden katalog wyżej od bieżącej lokalizacji pliku i poszukaj katalogu obrazów. Jak wygląda twoja struktura katalogów? –

+0

Mój folder projektu rails nazywa się ClassSchedule/apps/assets/images/dep.jpg – Dan

Odpowiedz

19

Serwer internetowy w szynach przyjmuje katalog public jako podstawę aplikacji. Stąd jego szukanie konkretnego obrazu pod /public/images/ zamiast app/assets/images/"dep.jpg" &, ponieważ tam nie ma tam nie można uzyskać obrazu. Spróbuj umieścić swój obraz w folderze /public/images/, a następnie zadziała.

Edit: Jeśli używasz szyny 3.1 wtedy byłby to inny jak Rails 3.1 wykorzystuje koncepcję rurociągu aktywów za aktywa o aplikacji tak to wtedy ścieżka app/assets/images/dep.jpg będzie oczywiście działać.

+0

jest czymś nowym dla szyn, więc nie jestem pewien, gdzie znajduje się folder publiczny. Działające to na serwerze localhost przy użyciu serwera railsowego – Dan

+0

Folder 'public' jest obecny w folderze głównym aplikacji' rails'.Hierarchiczna struktura wygląda tak: '/public/images' – uday

+0

Mój folder publiczny nie zawiera folderu ze zdjęciami, czy powinienem go utworzyć, czy też powinienem umieścić go w folderze publicznym? – Dan

1

Można użyć ścieżki bezwzględnej na pewno:

background-image:url('/images/dep.jpg'); 
+0

Zastanawiam się, ponieważ Railsy biorą 'public' jako bazowy, czy nie myślisz nawet, że zastosuje ścieżkę absoulte, która nie będzie działać, chyba że & nbsp; dopóki plik nie zostanie przeładowany przez serwer sieciowy przez jakieś dziwne poprawki? – uday

77

W Rails 3.1, ścieżka będzie faktycznie `/assets/dep.jpg ':

background-image: url(/assets/dep.jpg); 

Jeśli zamienić rusztowanie. plik css do pliku Sass (zmiana nazwy na scaffold.css.scss), a następnie można użyć pomocnika:

background-image: image-url("dep.jpg"); 
11

Jeśli obraz jest w app/assets/images/dep.jpg, a następnie w pliku css w szynach należy napisać: background: url('/assets/dep.jpg');

Nie trzeba umieszczać obrazu w tym folderze publicznym w ten sposób.

2

tło: url ("/ assets/image_name.jpg");

ten pracował dla mnie w Rails 4.0

+0

Ruby 4.0 ??? poważnie .. proszę zmienić go na Railsy, ​​jeśli chodziło o Rails 4 – Abhinay

+1

Sound, mój pierwszy dzień – laffan

+0

Cool !! Railsowy sposób to jest :) – Abhinay

0

Jeśli używasz nowoczesnej wersji szyn (3.1 lub nowszy wierzę), można użyć:

background: url('../dep.jpg'); 

Ponieważ css mieszka również w swojej folder zasobów .. automatycznie odnosi się do folderu zasobów.