gpt4 book ai didi

elixir - Phoenix 和 Ecto 以及 SELECT

转载 作者:行者123 更新时间:2023-12-02 06:37:45 26 4
gpt4 key购买 nike

我在 Phoenix 建立了一个 Ecto 模型协会。一个组织有许多组织成员。在 OrganizationMember Controller 的 Edit 方法中,我尝试创建一个 SELECT 元素来保存所有可供选择的组织。在编辑定义中,我有以下两行:

# organizations = Enum.to_list(from(o in Organization, order_by: o.name, select: [o.name, o.id]))
organizations = from(o in Organization, order_by: o.name, select: {o.name, o.id})

这是我在模板中显示选择的行:

<%= select f, :organization_id, @organizations, prompt: "Choose your organization" %>

如果我保留第一行注释,我会在模板选择上收到此错误:

protocol Enumerable not implemented for #Ecto.Query

如果我使用第一行并注释第二行,我会在 Controller 中收到此错误:

protocol Enumerable not implemented for #Ecto.Query

如何让选择正确显示选择下拉列表和值?顺便说一句,organization_id 来自此:

organization_member = Repo.get!(OrganizationMember, id) |> Repo.preload(:organization)    
organization_id = organization_member.organization.id

最佳答案

正如错误消息所示,%Ecto.Query{} 不是 Enumerable。如果你想带上查询结果,你必须调用存储库并给它查询:

Repo.all from(o in Organization, order_by: o.name, select: {o.name, o.id})

PS:请注意,我将 select 返回的值更改为元组,因为这是表单 select 所需要的。

关于elixir - Phoenix 和 Ecto 以及 SELECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32576899/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com