我有以下型号......
Page
Category
我在new
page_controller.ex
行动中有以下代码
def new(conn, _params) do
changeset = Page.changeset(%Page{})
categories = Repo.all(Category)
render(conn, "new.html", changeset: changeset, categories: categories)
end
我在page / new.html.eex
中有以下选择字段的代码<div class="form-group">
<%= label f, :category_id, "Parent", class: "control-label" %>
<%= select f, :category_id, @categories ,class: "form-control" %>
</div>
它应该在选择字段中显示所有类别,以便我可以为页面选择一个类别,但不幸的是我无法找到问题。如果您有任何建议,请告诉我。
答案 0 :(得分:14)
select/4函数需要第三个参数的元组列表。
来自文档:
值应该是包含两项元组(如地图和关键字列表)或任何Enumerable的Enumerable,其中元素将用作生成的select的键和值。
尝试将控制器更改为:
categories = Repo.all(Category) |> Enum.map(&{&1.name, &1.id})
这也可以在查询级别完成:
query = from(c in Category, select: {c.name, c.id})
categories = Repo.all(query)
有关将查询定义为模型中的函数的说明,请参阅Phoenix: Ordering a query set。