J'essaie de créer une page de création de produits dans des rails. Cela inclut l'ajout de plusieurs images et champs de texte. J'ai un modèle pour les produits et un pour les photos. J'utilise le gemme PaperClip pour le téléchargement de photos. Mais je n'ai aucune photo lorsque je visite la page du produit. Les photos ne sont pas enregistrées dans la base de données.
P.s. J'utilise haml. P>
= form_for @product, :html => { :multipart => true } do |f|
%p
= fields_for :photos do |f_i|
=f_i.file_field :image
5 Réponses :
Tout d'abord, votre formulaire est faux, q pour l'enregistrement des photos utilisé champs_for, alors vous utilisez champs_for f.object.photos ou utiliser photo.new do | g |, l'autre dans votre modèle de relation est erroné has_attached_file is has_many Photos, le papier HAS_ATTATECHED_FILE doit être utilisé dans le modèle à utiliser non dans la relation avec l'autre modèle. J'espère que cela vous aide, maintenant d'avoir un produit avec plusieurs photographies, je vous recommande d'utiliser le gem cocon, je q va selon votre cas, https://github.com/nathanvda/cocoon p>
Ce n'est pas assez articulé
Je pense que devrait être dans # ewoew méthode
Méthode Cuz .Build Interact avec @fields_for P> P>
Sa relation entre les modèles foirées.
@product.image requires image to be the attribute of product model means image fields should be in products table. @product.image should be @product.photo.image.url
Je n'ai pas fonctionné, je finirai par avoir une méthode non définie «Photos» pour Nil: Nilclass
Il y a plusieurs photos pour le produit .. @ Product.Photo ne fonctionnera pas, je suppose avoir besoin d'une boucle pour afficher toutes les photos!
Vous aviez écrit sous le modèle de photo comme suit: Cela n'a aucun sens ..
Dans votre modèle de photo, écrivez p> tandis que dans le modèle de produit écrire: p> effectivement ce sera un à plusieurs Relation aussi loin que j'avais compris: P> Il n'est pas nécessaire d'écrire has_attached_file dans le modèle de produit. Cela sera écrit sous le modèle de photo comme p> maintenant, vous avez plusieurs photos pour le produit. Donc, vous avez besoin de boucle pour montrer ces photos. par exemple, dans votre spectacle, faites quelque chose p> strong> em> __ __ em> __ __ > _ em> _ modifier 2 _ em> __ _ em> __ _ em> _ str> p> Dans votre modèle de produit P> dans votre modèle photo p> dans votre contrôleur de produits p> dans votre nouveau.html.haml p> essayez maintenant. ! p> p>
hein ... c'est bizarre ils ne sont pas
des idées sur ce que je devrais faire
Après avoir regardé votre code. C'est tout à fait simple que le produit n'a aucun attribut d'image. Photo Ayez un attribut image.
Vous devez donc accéder à des produits -> Photos -> Images P>
Faites ceci dans le contrôleur Afficher l'action P>
-@photos.each do |photo| = image_tag photo.image.url -end
Supprimer cette ligne has_attached_file: photo b> de votre modèle de produit Il n'y a pas besoin de cela ici.
Je n'ai pas compris jusqu'à ce que vous posiez à nouveau la même question ... qu'en est-il de l'ancien? vous gaspillez les autres fois .. Stackoverflow.com/Questtions/166665809/...
et troisième est ici Stackoverflow. com / questions / 16807112 / ...