<%= image_tag("/images/users/user_" + @user_id.to_s + ".png") %>
¿Cómo se comprueba si existe tal imagen y, en caso negativo, no se visualiza nada?¿Cómo comprobar si existe imagen en Rails?
Trabajando en Rails 3.07.
<%= image_tag("/images/users/user_" + @user_id.to_s + ".png") %>
¿Cómo se comprueba si existe tal imagen y, en caso negativo, no se visualiza nada?¿Cómo comprobar si existe imagen en Rails?
Trabajando en Rails 3.07.
Puede usar File.exist?.
if FileTest.exist?("#{RAILS_ROOT}/public/images/#{img}")
image_check = image_tag("#{img}",options)
else
image_check = image_tag("products/noimg.gif", options)
end
¿Usted puede usar File.file? método.
if File.file?("#{Rails.root}/app/assets/images/{image_name}")
image_tag("#{image_name}")
end
¿Usted también puede utilizar File.exist? método pero devolverá verdadero si encuentra un directorio o un archivo. ¿El archivo de método? es un poco más exigente que existe?
Las otras respuestas son un poco anticuado, debido a cambios en la tubería de activos desde los carriles rieles 4. El siguiente código funciona en los carriles 4 y 5:
Si el archivo se coloca en el directorio público, a continuación, su existencia puede comprobarse con:
# File is stored in ./public/my_folder/picture.jpg
File.file? "#{Rails.public_path}/my_folder/picture.jpg"
Sin embargo, si el archivo se coloca en los activos directorio a continuación, comprobar la existencia es un poco más difícil, debido a la pre-compilación activo en entornos de producción. Recomiendo el siguiente enfoque:
# File is stored in ./app/assets/images/my_folder/picture.jpg
# The following helper could, for example, be placed in ./app/helpers/
def asset_exists?(path)
if Rails.configuration.assets.compile
Rails.application.precompiled_assets.include? path
else
Rails.application.assets_manifest.assets[path].present?
end
end
asset_exists? 'my_folder/picture.jpg'
'Rails.application.assets_manifest.find_sources (path) .present?' – m1l05z
Lo que sería bueno es el parche de mono image_tag que hizo esto para usted, por lo que no tuvo que repetir esto para cada imagen. Así que compruebe que el archivo existe, si es así, super. De lo contrario, súper con noimg.gif. O crea tu propio helper image_or_default (img, options) – Yule
Sí, te recomiendo hacerlo más tarde porque odio modificar los métodos de framework existentes. –
@BrianMaltzan, entonces sugeriría usar un db para conocer el camino. Esto es lo que hago con aplicaciones web a gran escala que necesitan un CDN. –