使用 Phoenix Elixir 渲染分配以包含部分
Posted
技术标签:
【中文标题】使用 Phoenix Elixir 渲染分配以包含部分【英文标题】:Using Phoenix Elixir render assigns to include partials 【发布时间】:2016-07-24 01:09:14 【问题描述】:在我的 app.html.eex 文件中,我有:
<%= assigns[:feet]%>
在我的控制器中,我有:
def index(conn, _params) do
render(conn, "index.html", feet: "feet.html")
end
我想这样做,以便可以在不同的子视图中导入不同的脚。例如:
def :edit(conn, _params) do
render(conn, "edit.html", feet: "edit-feet.html")
end
不幸的是,它只是打印“feet.html”而不是导入 feet.html。
这有可能吗?
【问题讨论】:
【参考方案1】:您需要拨打Phoenix.View.render/3
:
<%= render YourView, @feet, [] %>
如果设置feet
是可选的,并且您不想渲染任何不存在的东西,您可以这样做:
<%= if feet = assigns[:feet] do %>
<%= render YourView, feet, [] %>
<% end %>
将YourView
替换为包含feet.html
和edit-feet.html
的视图。
如果您需要将任何assigns
传递给这些模板,您可以将[]
替换为您要传递的值:
<%= render YourView, @feet, foo: "bar", baz: "quux" %>
【讨论】:
` ` 正是我想要的。 @mchavezi Pedantic 评论:如果您使用的是@feet
,则无需使用feet =
。或者你应该在if
中使用feet
。您评论中的版本有一个未使用的变量。以上是关于使用 Phoenix Elixir 渲染分配以包含部分的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 elixir/phoenix 从 csv 文件导入用户?
Phoenix/Elixir - 协议 Enumerable 未实现
如何安排代码在 Elixir 或 Phoenix 框架中每隔几个小时运行一次?