我有一个应用程序,其中列出了父母和孩子。当我添加一个孩子时,我需要获得一个父母列表作为下拉列表显示。凤凰城里有没有像Rails collection_select
这样的东西?我想显示用户的名称,并使用user_id作为参数。
我还想通过site_id确定父母列表的范围。
答案 0 :(得分:9)
您可以使用Phoenix.HTML.Form
中的select/4功能。
在您的控制器中,您可以使用查询来获取父级:
query = from(p in Parent, select: {p.id, p.name})
parents = Repo.all(query)
我们需要此查询的原因是格式化预期格式的值:
值应该是包含两项元组(如地图和关键字列表)或任何Enumerable的Enumerable,其中元素将用作生成的select的键和值。
然后,您可以在模板中使用select/4
:
<%= select f, :parent_id, @parents ,class: "form-control" %>
如果您已经拥有父母,也可以使用Enum.map/2转换记录:
parents = Repo.all(Parent) |> Enum.map(&{&1.id, &1.name})
答案 1 :(得分:0)
all_parents = Repo.all from p in Parent, select: {p.name, p.id}
<%= select f, :parent_id, @all_parents %>