Saya telah meletakkan semua gambar saya untuk tema admin saya di folder aset dalam folder yang disebut admin. Lalu saya tautkan ke sana seperti biasa yaitu.
# Ruby
image_tag "admin/file.jpg" .....
#CSS
.logo{ background:url('/assets/images/admin/logo.png');
FYI. Hanya untuk pengujian saya belum menggunakan tag asset_path karena saya belum mengkompilasi aset saya.
Ok semuanya baik sejauh ini sampai saya memutuskan untuk memperbarui gambar. Saya mengganti beberapa warna tetapi saat memuat ulang gambar gaya baru tidak muncul. Jika saya melihat gambar secara langsung di browser masih menampilkan gambar yang lama. Selangkah lebih maju saya menghancurkan folder gambar admin. Tapi tidak ada yang rusak semua gambar masih ditampilkan. Dan ya saya telah membersihkan cache dan mencoba beberapa browser.
Apakah ada semacam caching gambar yang terjadi? Ini hanya pengembangan lokal menggunakan pow untuk melayani halaman.
Bahkan menghancurkan seluruh folder gambar, gambar masih disajikan.
Apakah saya melewatkan sesuatu?
Jawaban:
Dalam 3.1 Anda hanya menyingkirkan bagian 'gambar' dari jalan. Jadi gambar yang hidup
/assets/images/example.png
sebenarnya dapat diakses dalam permintaan dapatkan di url ini -/assets/example.png
Karena
assets/images
folder dihasilkan bersama dengan aplikasi 3.1 baru, ini adalah konvensi yang mungkin ingin Anda ikuti. Saya pikir di situlah tempatnyaimage_tag
akan mencarinya, tetapi saya belum mengujinya.Juga, selama keynote RailsConf, saya ingat D2h mengatakan yang
public folder
seharusnya tidak memiliki banyak lagi, sebagian besar hanya halaman kesalahan dan favicon.sumber
Anda ingin mengubah ekstensi file css Anda dari
.css.scss
menjadi.css.scss.erb
dan lakukan:Anda mungkin perlu melakukan "penyegaran keras" untuk melihat perubahan. CMD + SHIFT + R pada browser OSX.
Dalam produksi, pastikan
terjadi saat penyebaran.
sumber
.css
menjadi.css.erb
(setelah Anda memindahkannya keapp/assets
untuk mendapatkan pemrosesanUntuk apa nilainya, ketika saya melakukan ini saya menemukan bahwa tidak ada folder yang harus dimasukkan dalam path di file css. Sebagai contoh jika saya punya
app/assets/images/example.png
, dan saya meletakkan ini di file css saya ...... lalu entah bagaimana itu secara ajaib bekerja. Saya menemukan ini dengan menjalankan
rake assets:precompile
tugas, yang hanya menghisap semuanya dari semua jalur beban Anda dan membuangnya ke folder laci sampah:public/assets
. Itu ironis, IMO ...Bagaimanapun, ini berarti Anda tidak perlu meletakkan jalur folder apa pun, semua yang ada di folder aset Anda semua akan berakhir dengan tinggal di satu direktori besar. Bagaimana sistem ini menyelesaikan konflik nama file tidak jelas, Anda mungkin perlu berhati-hati tentang hal itu.
Agak frustasi tidak ada dokumen yang lebih baik di luar sana untuk perubahan sebesar ini.
sumber
asset_path()
helper dan menentukan direktori.Di rails 4 Anda sekarang dapat menggunakan css dan sass helper image-url:
Jika gambar latar belakang Anda tidak muncul, pertimbangkan untuk melihat bagaimana Anda mereferensikannya di lembar gaya Anda.
sumber
div.logo {background: image-url("logo.png") no-repeat center;}
saat mereferensikan gambar dalam CSS atau dalam tag IMG, gunakan image-name.jpg
sementara gambar benar-benar terletak di bawah ./assets/images/image-name.jpg
sumber
background: url('sort_asc_disabled.png')
berfungsi untuk aplikasi file / aset / gambar / sort_asc_disabled.png.http://railscasts.com/episodes/279-understanding-the-asset-pipeline
Railscast ini (video Tutorial Rails pada pipeline aset) banyak membantu menjelaskan jalur dalam pipet aset. Saya menemukan itu sangat berguna, dan benar-benar menontonnya beberapa kali.
Solusi yang saya pilih adalah @Lee McAlilly di atas, tetapi railscast ini membantu saya untuk memahami mengapa ia bekerja. Semoga ini bisa membantu!
sumber
Pipa aset dalam rel menawarkan metode untuk hal yang tepat ini.
Anda cukup menambahkan image_path ('nama file gambar') ke file css atau scss Anda dan rel menangani semuanya. Sebagai contoh:
.logo{ background:url(image_path('admin/logo.png'));
(perhatikan bahwa ini berfungsi seperti pada tampilan .erb, dan Anda tidak menggunakan "/ aset" atau "/ aset / gambar" di jalur)
Rails juga menawarkan metode pembantu lainnya, dan ada jawaban lain di sini: Bagaimana cara menggunakan gambar referensi di Sass saat menggunakan Rails 3.1?
sumber