J'ai une page d'affichage du projet qui affiche correctement le texte:img Rendu dans un modèle EEX: protocole Phoenix.HTML.Safe pas mis en œuvre
<p><%= @post.body %></p>
<%= @post.title %></h1>
Je veux afficher une image téléchargée utilisateur.
J'ai essayé:
<img src="<%= @post.project_pic %>"/>
qui retourne:
protocol Phoenix.HTML.Safe not implemented for %{file_name: "pexels-photo-144322 (1).jpeg", updated_at: #Ecto.DateTime<2017-08-06 14:05:26>}
Cela me montre la photo a téléchargé et stocké dans la base de données.
J'ajouté inspectent:
<img src="<%= inspect @post.project_pic %>"/>
selon cette réponse:
protocol Phoenix.HTML.Safe not implemented Elixir Phoenix
qui passe le compilateur, mais affiche uniquement une icône d'image brisée.
Comment l'image est-elle enregistrée?
je cela dans post.ex:
field :project_pic, Citybuilder.ProjectPic.Type
dans stories.ex J'ai:
|> cast_attachments(attrs, [:project_pic])
dans le dernier fichier de migration, il est stocké sous forme de chaîne:
add :project_pic, :string
Peut-être que c'est l'erreur.
Je ne suis pas sûr si l'erreur est dans ma syntaxe eex, ou quelque part plus profond dans la structure du fichier.
Comment calculez-vous et stockez 'project_pic'? Vous voulez probablement '<% = @ post.project_pic.file_name%>' si l'image est dans le même chemin racine. – Dogbert
J'ai mis à jour ma question pour inclure plus d'informations. Voir "Comment l'image est-elle stockée?" Si vous voulez savoir autre chose, s'il vous plaît demander. – RubyRube
'cast_attachments' signifie que vous utilisez' arc' et 'arc_ecto'? – Dogbert