Elixir Phoenix帮助关联模型列表

时间:2015-12-05 08:42:51

标签: elixir phoenix-framework

我有一个应用程序,其中列出了父母和孩子。当我添加一个孩子时,我需要获得一个父母列表作为下拉列表显示。凤凰城里有没有像Rails collection_select这样的东西?我想显示用户的名称,并使用user_id作为参数。

我还想通过site_id确定父母列表的范围。

2 个答案:

答案 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}

EEX

<%= select f, :parent_id, @all_parents %>