Apakah kita harus menggunakan sesuatu selain image-url
dan lainnya di Rails 4? Mereka mengembalikan nilai-nilai berbeda yang tampaknya tidak masuk akal. Jika saya sudah logo.png
masuk /app/assets/images/logo.png
dan saya melakukan hal berikut, inilah yang saya dapatkan:
image-url("logo.png") -> url("/images/logo.png") #obviously doesn't work
image-path("logo.png") -> "/images/logo.png"
asset-url("logo.png") -> url("/logo.png")
Tentu saja tidak ada yang berhasil karena mereka membutuhkan setidaknya /assets
di depan.
UPDATE : Sebenarnya, saya baru tahu, bagaimana cara mengakses gambar di Rails 4? Saya memiliki gambar di/app/assets/images/logo.png
. Tetapi jika saya membuka salah satu URL berikut, saya masih tidak melihat gambar saya:
http://localhost:3000/assets/logo.png
http://localhost:3000/assets/images/logo.png
http://localhost:3000/logo.png
http://localhost:3000/images/logo.png
PEMBARUAN 2 : Satu-satunya cara saya dapat menampilkannyalogo.png
adalah dengan memindahkannya ke/app/assets/stylesheets
direktori lalu menariknya ke atas:
http://localhost:3000/assets/logo.png
asset_path("logo.png", image)
.css
file atau dalam.css.scss
file?.css.scss
fileJawaban:
Saya baru saja mengalami masalah ini sendiri. 3 poin yang semoga akan membantu:
app/assets/images
direktori Anda , maka Anda harus dapat memanggil gambar secara langsung tanpa awalan di jalurnya. yaitu.image_url('logo.png')
background-image:
properti, maka baris kode Anda harusbackground-image: image-url('logo.png')
. Ini berfungsi untuk stylesheet less dan sass. Jika Anda menggunakannya secara inline dalam tampilan, maka Anda perlu menggunakanimage_tag
helper in rails bawaan untuk menampilkan gambar Anda. Sekali lagi, tidak ada awalan<%= image_tag 'logo.png' %>
rake assets:precompile
untuk menghasilkan aset Anda, ataurake assets:precompile RAILS_ENV=production
untuk produksi, jika tidak, lingkungan produksi Anda tidak akan memiliki aset sidik jari saat memuat halaman.Juga untuk perintah-perintah di poin 3, Anda perlu memberi awalan
bundle exec
jika Anda menjalankan bundler.sumber
Rumus pertama Anda
image_url('logo.png')
,, benar. Jika gambar ditemukan, itu akan menghasilkan jalur/assets/logo.png
(ditambah hash dalam produksi). Namun, jika Rails tidak dapat menemukan gambar yang Anda beri nama, gambar itu akan dikembalikan ke/images/logo.png
.Pertanyaan selanjutnya adalah: mengapa Rails tidak menemukan gambar Anda? Jika Anda meletakkannya di app / assets / images / logo.png, maka Anda harus dapat mengaksesnya dengan masuk ke
http://localhost:3000/assets/logo.png
.Jika berhasil, tetapi CSS Anda tidak diperbarui, Anda mungkin perlu menghapus cache. Menghapus
tmp/cache/assets
dari direktori proyek Anda dan mulai ulang server (webrick, dll.).Jika gagal, Anda juga dapat mencoba menggunakan.
background-image: url(logo.png);
Itu akan menyebabkan CSS Anda mencari file dengan jalur relatif yang sama (dalam hal ini adalah / assets).sumber
Saya baru tahu, bahwa dengan menggunakan
asset_url
helper Anda menyelesaikan masalah itu.sumber
undefined local variable or method 'image'
kesalahan.asset_path("<your_path>", type: :image)
Saya memiliki masalah serupa, mencoba menambahkan gambar latar belakang dengan css inline. Tidak perlu menentukan folder gambar karena cara kerja sinkronisasi aset.
Ini berhasil untuk saya:
sumber
assets/img.jpg
atau../assets/img.jpg
yang jelas tidak berfungsi di direktori mana pun./assets/img.jpg
tidak. TYRails 4.0.0 akan terlihat gambar yang ditentukan dengan
image-url
dalam struktur direktori yang sama dengan file css Anda.Misalnya, jika css Anda masuk
assets/stylesheets/main.css.scss
,image-url('logo.png')
menjadiurl(/assets/logo.png)
.Jika Anda memindahkan file css ke
assets/stylesheets/cpanel/main.css.scss
,image-url('logo.png')
menjadi/assets/cpanel/logo.png
.Jika Anda ingin menggunakan gambar langsung di bawah direktori aset / gambar, Anda dapat menggunakan
asset-url('logo.png')
sumber
untuk stylesheet: url (asset_path ('image.jpg'))
sumber
url(asset_path('image.jpg')
,url('image.jpg')
danimage-url('image.jpg')
? Saya bekerja dengan Rails 5.0.0.1 danurl()
bekerja dengan baik di file SCSS dan di file html.erb yang saya gunakanasset_path()
jadi saya ingin tahu cara yang benar untuk melakukannya. Terima kasih sebelumnya.asset_path
tambahkan ke file gambar lampiran intisari. Ini sebenarnya untuk produksi, setelah setiap penerapan, lampiran ringkasan akan diubah dan browser pengguna akan mengunduh gambar versi baru.