0
votes

L'image du modèle polymorphique ne s'affiche pas

J'ai un modèle nommé HEN:

Processing by HensController#show as HTML
  Parameters: {"id"=>"3"}
  User Load (0.6ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2  [["id", 1], ["LIMIT", 1]]
  Hen Load (0.5ms)  SELECT "hens".* FROM "hens" WHERE "hens"."id" = $1 LIMIT $2  [["id", 3], ["LIMIT", 1]]
  ↳ app/controllers/hens_controller.rb:16:in `show'
  Rendering hens/show.html.erb within layouts/application
  Rendered hens/show.html.erb within layouts/application (Duration: 5.9ms | Allocations: 3302)
[Webpacker] Everything's up-to-date. Nothing to do
Completed 200 OK in 125ms (Views: 67.7ms | ActiveRecord: 10.7ms | Allocations: 36995)*


0 commentaires

3 Réponses :


1
votes

Vous n'êtes pas réellement en boucle à travers des images. Vous devez utiliser @ hen.picutres.ache code> ou pour l'image dans @ hen.pictures code>. Sans cela, vous venez de passer un bloc à @ hen.pictures code>; Le bloc est ignoré et l'expression renvoie @ hen.pictures code> ( image :: activerecord_associations_collectionproxy code>).

L'équivalent plain-rubis serait p>

@hen.pictures.each { |picture| ... this block is used by the `each` method }


2 commentaires

Merci de répondre, maintenant, il renvoie un tableau vide []


@petrov Je pense que vous avez également besoin d'un accept d'attributs imbriqués dans le modèle de poule ( accepte_netés_attributes_for: images, rejet_if:: all_blank, allemande_destroy: true ), ainsi que dans vos paramètres solides images_attributes: [: ID,: Imagobe_ID,: Imagetable_Type ,: Image]



0
votes

ici Vous imprimez l'URL de l'image. Vous ne devriez pas inclure = fort> lorsque vous bouclez strong> vous devez utiliser strong> alors vous avez besoin Pour boucler les images à l'aide de chacun.

<%= image_tag pic.url.to_s %>


0 commentaires

0
votes

Cela peut ne pas être la réponse directe du problème, mais j'ai constaté qu'une meilleure option est d'utiliser Activestorage que de créer des associations polymorphes entre les modèles.

Tout d'abord, installez l'activestorage: p> xxx pré>

puis ajoutez macro has_one_attached code> ou has_many_attached code> sur les modèles: p> xxx pré>

Ajouter au formulaire de vue: P>

<%= image_tag hen.image if hen.image.attached? %>


0 commentaires