如何在Phoenix框架模板中渲染arc_ecto图像?

时间:2015-11-21 05:16:22

标签: elixir phoenix-framework

我在我的模板中写下了以下代码。

<img src="<%= EdgeEc.Photo.url({@image.content, @image}, :original) %>" alt="" />

如下所示。

<img src="uploads/large_myimagefilename.jpg.jpg?v=63615301283" alt="" />

然后,我在地址栏中键入了路径localhost:4000/uploads/large_116.jpg.jpg?v=63615301283并得到了以下错误。

no route found for GET /uploads/large_116.jpg.jpg (EdgeEc.Router)

也许,因为上传的图像不是模型而且它没有路由控制器。

我可以路由上传的图片和渲染吗?

2 个答案:

答案 0 :(得分:2)

自我解决。

我发现了以下问题。

https://github.com/stavro/arc_ecto/issues/4

答案 1 :(得分:1)

或者,更详细地说,您想要提供static assets。我实际上发现修改现有的plug是唯一可行的,所以,如果您的应用名称在您的示例中是EdgeEc:

lib/edge_ec/endpoint.ex

plug Plug.Static,
  at: "/", from: :edge_ec,
  only: ~w(css fonts images js uploads favicon.ico robots.txt)

另外,请确保您的弧文件模块定义的存储目录以priv/static开头:

def storage_dir(_version, {_file, _scope}), do: "priv/static/uploads"

为URL生成器编写帮助程序以修剪priv/static

def photo_url(struct) do
  Photo.url({struct.image, struct})
  |> Path.relative_to("priv/static")
end