gpt4 book ai didi

templates - Phoenix : render template of other folder

转载 作者:行者123 更新时间:2023-12-02 21:46:13 34 4
gpt4 key购买 nike

我的 web/templates 文件夹中有两个模板文件夹:

> ls web/templates
personal_info user

我想要的是在 personal_info 的另一个 View 中渲染 user 文件夹中的一些模板。所以我的路径有一个文件:web/templates/personal_info/index.html.eex,我有以下内容:

<%= render "user/xyz.html" %>

但我收到以下错误:

[error] #PID<0.821.0> running MyApp.Endpoint terminated
Server: localhost:4000 (http)
Request: GET /
** (exit) an exception was raised:
** (Phoenix.Template.UndefinedError) Could not render "user/xyz.html" for MyApp.PersonalInfoView, please define a matching clause for render/1 or define a template at "web/templates/personal_info". The following templates were compiled:

* index.html

请告诉我如何渲染其他文件夹中定义的模板,我尝试了一些排列,但没有成功。

最佳答案

Phoenix 模板只是函数,因此当您想从 PersonalInfo View 中呈现 UserView 的“xyz.html”模板时,只需调用功能!

假设您位于 web/templates/personal_info/show.html.eex 模板内。 (Phoenix.View.render 已为您导入):

<%= render UserView, "xyz.html", user: user %>

如果您想传递您提供的 PersonalInfo 模板的所有模板分配:

<%= render UserView, "xyz.html", assigns %>

正如您所发现的,这在任何地方都适用,因为模板只是函数。例如,同样的事情在 iex 中也可以工作:

iex> Phoenix.View.render(MyApp.UserView, "xyz.html")
"<h1>User ..."

关于templates - Phoenix : render template of other folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32784008/

34 4 0