渲染部分位于 Phoenix 的子目录中

Render partial located in child directory in Phoenix

如果部分文件与另一个 .eex 文件位于同一文件夹中,您可以 运行 render "filename.html",但如果它位于子文件夹中怎么办?在我的例子中,我有一堆包含 HTML 的部分 SVG 图标。我不希望这些文件弄乱我的控制器的主模板目录(我宁愿将它们放在 templates/pages/icons 而不是 templates/pages 中)。但是,如果它们与呈现它们的 .eex 文件不在同一个目录中,则按名称引用它们是行不通的,render "icons/filename.html" 之类的事情也不行。处理此问题的正确方法是什么?

您必须首先修改您的 web/web.ex 文件,让它知道包含子目录:

use Phoenix.View, root: "web/templates", pattern: "**/*"

进行此更改后,您可以像这样使用相对路径:"icons/filename.html"

希望对您有所帮助!