凤凰通道变量查看



>我有一个将在视图中使用的查询结果,但是当我调用视图中的变量时,我得到了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)

最新更新