Elixir Phoenix附加布局变量,如@inner

Elixir Phoenix附加布局变量,如@inner,elixir,phoenix-framework,Elixir,Phoenix Framework,我希望为布局添加额外的布局参数,如@internal。例如,用于@title的@title,以及用于为单个页面加载javascript的区域 window.onload = function () { @onload_js } 这些都是在布局中设置的,所以我不确定在凤凰城处理这些问题的最佳方式。谢谢:D.对于页面标题,您只需从控制器传递一个值: def edit(conn, params) do render(conn, "edit.html", page_title: "Edit

我希望为布局添加额外的布局参数,如
@internal
。例如,用于
@title
@title
,以及用于为单个页面加载javascript的区域

window.onload = function () {
   @onload_js
}

这些都是在布局中设置的,所以我不确定在凤凰城处理这些问题的最佳方式。谢谢:D.

对于页面标题,您只需从控制器传递一个值:

def edit(conn, params) do
  render(conn, "edit.html", page_title: "Edit The Thing")
end

<head>
  <title><%= assigns[:page_title] || "Default Title" %></title>
</head>
然后,@internal视图的模块可以决定为脚本提供预编译模板,或者直接实现函数,即:

def render(“scripts.html”,_赋值)执行
""
结束
要使用预编译模板,请在templates目录中为要为其渲染的相应视图创建scripts.html.eex文件。例如,对于UserView,在web/templates/user/处创建scripts.html.eex文件


对于页面标题,您只需从控制器传递一个值:

def edit(conn, params) do
  render(conn, "edit.html", page_title: "Edit The Thing")
end

<head>
  <title><%= assigns[:page_title] || "Default Title" %></title>
</head>
然后,@internal视图的模块可以决定为脚本提供预编译模板,或者直接实现函数,即:

def render(“scripts.html”,_赋值)执行
""
结束
要使用预编译模板,请在templates目录中为要为其渲染的相应视图创建scripts.html.eex文件。例如,对于UserView,在web/templates/user/处创建scripts.html.eex文件


太神了谢谢你的解释。在解决这个问题上帮了大忙。这是可行的,但是如果你想添加很多特定于页面的元数据呢。你的控制器方法很快就会变得一团糟!另外,控制器应该用于业务逻辑。我建议使用render_existing/2函数,如前所述!谢谢你的解释。在解决这个问题上帮了大忙。这是可行的,但是如果你想添加很多特定于页面的元数据呢。你的控制器方法很快就会变得一团糟!另外,控制器应该用于业务逻辑。我建议使用render_existing/2函数,如前所述
def render("scripts.html", _assigns) do
  "<script src="...">"
end