凤凰通过变量查看

时间:2018-12-27 06:15:08

标签: elixir phoenix-framework

我有一个将在视图中使用的查询结果,但是当我在视图中调用变量时,我得到了undefined function data/0(因为数据不起作用)

我已经用不同的方式,地图等传递数据了

controller.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

view.html.eex:

<% Enum.each data, fn(item) -> %>
    <option value="us">Facebook</option>
<% end %>

从视图中调用data变量

2 个答案:

答案 0 :(得分:1)

改为使用以下代码:

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

答案 1 :(得分:1)

const express = require('express') const app = express() app.use(express.json()) var bodyParser = require('body-parser') app.use(bodyParser.urlencoded({ extended: true })) var multer = require('multer') var path = require('path') app.get('/', function (req, res) { // Do something }) app.get('/api/get_entities', function (req, res) { // Do something else }) 返回一个列表(我负责以更惯用的方式重写代码):

Enum.map/2

很明显,一个人不能通过按键访问列表;改用关键字:

data =
  AccountTypeSchema
  |> Repo.all()
  |> Enum.map(& &1 |> Map.from_struct() |> Map.delete(:__meta__))