我在我的模板中写下了以下代码。
<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)
也许,因为上传的图像不是模型而且它没有路由控制器。
我可以路由上传的图片和渲染吗?
答案 0 :(得分:2)
答案 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