Je suis dans un carrousel bootstrap, je veux appeler une méthode qui jouera les images dans le carrousel SI elles sont attachées et qui jouera une image par défaut (dans le carrousel) SI elles ne sont pas attachées.
Voici ma méthode:
def bien_picture_carousel
if images.attached?
images.each do |image|
image.key
end
else
"bien-par_defaut_shvulu"
end
end
Voici mon itération de carrousel bootstrap (mon carrousel fonctionne parfaitement bien sans l'appel de la méthode)
<% @bien.images.each.with_index do |image, i| %>
<div class="carousel-item >
<%= cl_image_tag @bien.bien_picture_carousel%> **<--- error is on this line**
</div>
<% end %>
Problème: J'ai ce message d'erreur: « pas de conversion implicite d'ActiveStorage::Attachment en String »
Je ne comprends pas vraiment ce message d'erreur. Que puis-je faire pour que ça marche?
ÉDITER:
J'ai mis à jour mon approche:
<div class="carousel-inner">
<% if @bien.images.attached? %>
<% @bien.images.each.with_index do |image, i| %>
<div class="carousel-item" >
<%= cl_image_tag image.key%>
</div>
<% end %>
<% else %>
<% @bien.images.each.with_index do |image, i| %>
<div class="carousel-item" >
<%= cl_image_tag "bien-par_defaut_shvulu" %>
</div>
<% end %>
<% end %>
La partie else ne s'affiche pas à l'écran
Solution du problème
Résolu,
une classe active manquait.
j'ai remplacé
<% else %>
<div class="carousel-item" >
<%= cl_image_tag "bien-par_defaut_shvulu" %>
</div>
<% end %>
<% end %>
par
<% else %>
<div class="carousel-item active" >
<%= cl_image_tag "bien-par_defaut_shvulu" %>
</div>
<% end %>
Aucun commentaire:
Enregistrer un commentaire