>我有一个将在视图中使用的查询结果,但是当我调用视图中的变量时,我得到了undefined function data/0
(因为数据不起作用)
我已经用不同的方式、地图等传递数据
控制器.ex :
def new(conn, _params) do
data =
Enum.map(
from(AccountTypeSchema)
|> Repo.all(),
fn elem ->
elem |> Map.from_struct() |> Map.delete(:__meta__)
end
)
render(conn, "new.html", data: data)
end
查看.html.eex :
<% Enum.each data, fn(item) -> %>
<option value="us">Facebook</option>
<% end %>
从视图调用data
变量
请改用以下代码:
render(conn, "new.html", account_types: data)
然后查看:
<% Enum.each @account_types, fn(item) -> %>
<option value="us">Facebook</option>
<% end %>
通常,当您将关键字列表或映射到视图时,模板中@
前缀变量可用:https://hexdocs.pm/phoenix/Phoenix.View.html#render/3
Enum.map/2
返回一个列表(我负责以更惯用的方式重写代码):
data =
AccountTypeSchema
|> Repo.all()
|> Enum.map(& &1 |> Map.from_struct() |> Map.delete(:__meta__))
显然,不能按键访问列表;而是传递关键字:
render(conn, "new.html", data: data)