Elixir Phoenix帮助关联模型列表

Pra*_*oya 6 elixir phoenix-framework

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

我还希望通过site_id确定父项列表的范围.

Gaz*_*ler 10

您可以使用select/4功能Phoenix.HTML.Form.

在您的控制器中,您可以使用查询来获取父项:

query = from(p in Parent, select: {p.id, p.name})
parents = Repo.all(query)
Run Code Online (Sandbox Code Playgroud)

我们需要此查询的原因是以预期格式格式化值:

值应该是包含两项元组(如地图和关键字列表)或任何Enumerable的Enumerable,其中元素将同时用作生成的select的键和值.

然后select/4,您可以在模板中使用:

<%= select f, :parent_id, @parents ,class: "form-control" %>
Run Code Online (Sandbox Code Playgroud)

如果您已经有父母,也可以使用Enum.map/2转换记录:

parents = Repo.all(Parent) |> Enum.map(&{&1.id, &1.name})
Run Code Online (Sandbox Code Playgroud)