列表到Elixir中的关键字列表

Kyl*_*cot 4 erlang elixir phoenix-framework

我有一个使用Ecto引入的结果列表.我想最终得到一个关键字列表,然后我可以用它来填充<select>凤凰城内部,但我不确定如何将此列表转换为关键字列表,如["1": "Author #1", "2": "Author #2"]

authors = Repo.all(Author)
# How would I create ["1": "Author #1", "2": "Author #2"]
Run Code Online (Sandbox Code Playgroud)

Jos*_*lim 6

关键字列表需要原子作为键.好消息是您不需要提供关键字列表select.这有两种方法:

  1. 直接在查询中执行:

    authors = Repo.all from a in Author, select: {a.name, a.id}
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在数据上做:

    authors = Repo.all Author
    Enum.map(authors, fn a -> {a.name, a.id} end)
    
    Run Code Online (Sandbox Code Playgroud)

第一个优点是您只需从表中加载所需的数据.