2017-08-06 10 views
1

を実装されていません:レンダリングIMG:プロトコルPhoenix.HTML.Safe私が正しくテキストを表示するプロジェクトの表示ページを持っている

<p><%= @post.body %></p> 

<%= @post.title %></h1> 

私は、ユーザーがアップロードし写真を表示したいです。

は、私が試した:

<img src="<%= @post.project_pic %>"/> 

返す:

protocol Phoenix.HTML.Safe not implemented for %{file_name: "pexels-photo-144322 (1).jpeg", updated_at: #Ecto.DateTime<2017-08-06 14:05:26>} 

これは、PICは、アップロードした私を示しており、データベースに格納されます。この回答どおり

<img src="<%= inspect @post.project_pic %>"/> 

:のみをコンパイラに渡しますが、

protocol Phoenix.HTML.Safe not implemented Elixir Phoenix

が壊れた画像アイコンを表示する

は私が検査を追加しました。

写真はどのように保存されていますか?

私はpost.exでこれを持っている:stories.exで

field :project_pic, Citybuilder.ProjectPic.Type 

は私が持っている:最新の移行ファイル内

|> cast_attachments(attrs, [:project_pic]) 

それは文字列として保存されています:

add :project_pic, :string 

多分それは誤りです。

エラーが私のeex構文にあるのか、それともファイル構造のどこかにあるのかどうかはわかりません。

+0

'project_pic'をどのように計算して保存していますか?イメージが同じルートパスにある場合は、おそらく '<%= @ post.project_pic.file_name%>'が必要です。 – Dogbert

+0

私は質問を更新してより多くの情報を追加しました。 「写真はどのように保存されていますか?」を参照してください。他に何か知りたければ、お尋ねください。 – RubyRube

+0

'cast_attachments'はあなたが' arc'と 'arc_ecto'を使用していることを意味しますか? – Dogbert

答えて

3

arc_ectoはあなたが<img>タグにsrcとして使用することができ、アップロードの完全なURLを取得するために呼び出すことができます添付ファイルのモジュールでurl関数を定義しています。最初の引数は添付値とモデル全体のタプルで、2番目の引数は画像サイズです(:originalは元のフルサイズの画像です)。多くのためのdocumentation of arc_ectoをチェック

<img src="<%= Citybuilder.ProjectPic.url({@post.project_pic, @post}, :original) %>"/> 

:次はあなたのためのオリジナルフルサイズの画像を埋め込む必要があります。

関連する問題