2012-04-21 4 views
9

Szukałem i szukałem tej odpowiedzi. Ale nie mogę sprawić, żeby ta praca trwała kilka godzin. Proszę, pomóż mi.sposób pobierania obrazu z folderu assets/images w aplikacji szyny

Jestem strona mojej aplikacji szyn, staram się pokazać obraz zapisany w moim folderze aktywów @app/assets/images/rails.png.

Mam plik JavaScript z następującej funkcji, która konstruuje html. Wewnątrz tej funkcji chciałbym podać link do obrazu. To jest kod, który mam obecnie.

function addToInfoWindow(infoWindowContent) 
{ 

infoWindowString = '<div class="infoWindow">'+ 
**'<img src="/assets/images/rails.png" />'+** 
'<p>'+infoWindowContent+'</p>'+ 
'<p><a href="http://www.google.com">See here</a></p>'+ 
'<p><a href="http://www.google.com">Upload a photo</a></p>'+ 
'</div>'; 
infoWindow.setContent(infoWindowString); 

} 

Jak widać powyżej w kodzie, problemem jest pogrubiona część. Próbowałem kilka różnych kombinacji ciągów url, aby uzyskać dostęp do tego pliku obrazu, ale obraz nie pojawia się w elemencie HTML.

Sprawdziłem i sprawdziłem, wypróbowałem funkcje pomocnicze ruterów, takie jak image_url('rails.png'). Ale muszę je umieścić w niewłaściwym miejscu. Czy ktoś może mi pomóc. Pokaż, gdzie, jaka funkcja w powyższym kodzie muszę dodać, aby pobrać obraz pod adresem /assets/images/rails.png, aby adres URL został umieszczony w podświetlonej części powyżej i wyświetli się w moim widoku.

Odpowiedz

23

Jeśli chcesz użyć szyn pomocników trzeba „uaktualnienia "twoje pliki javascript do erb.

Wystarczy zmienić ich nazwę z whatever.js na whatever.js.erb. Teraz szyny wykonają cały kod erb (stuff między <% = i%>) przed dostarczeniem pliku.

Więc można zrobić tak:

<img src="<%= asset_path('rails.png') %>" /> 

More information patrz 2.2.3.

+1

To działało. Łał. Spędziłem 4 godziny próbując różnych rzeczy, a cały czas tylko dlatego, że plik nie ma rozszerzenia. Bardzo dziękuję za pomoc – banditKing

+1

To zawsze takie: P Cieszę się, że mogłem pomóc. – klump

+1

Należy pamiętać, że jeśli używasz coffeescript, rozszerzenie do używania erb to '.js.coffee', a nie' .js.cofee.erb'. erb jest automatyczne. Wiem, to takie dziwne. Ale tak to działa. Ta informacja powinna zaoszczędzić ludziom trochę czasu. – ahnbizcad

3

nie będą mogli korzystać z szyn pomocników jak image_tag w czystym JavaScript - dołącz .erb i używać asset_path (patrz odpowiedź na Klump)