首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >凤凰与经济与选择

凤凰与经济与选择
EN

Stack Overflow用户
提问于 2015-09-15 02:46:22
回答 1查看 954关注 0票数 3

我在凤凰城的Ecto模特公司成立了一个协会。一个组织有许多OrganizationMembers。在OrganizationMember控制器的Edit方法中,我试图创建一个SELECT元素,该元素将容纳所有可供选择的组织。在编辑定义中,我有以下两行:

代码语言:javascript
复制
# 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的行:

代码语言:javascript
复制
<%= select f, :organization_id, @organizations, prompt: "Choose your organization" %>

如果保留第一行注释,则在模板选择上出现以下错误:

不能为#Ecto.Query实现的协议枚举

如果使用第一行并对第二行进行注释,则控制器中会出现以下错误:

不能为#Ecto.Query实现的协议枚举

如何让select正确地显示select下拉列表和值?顺便说一下,organization_id来自于以下内容:

代码语言:javascript
复制
organization_member = Repo.get!(OrganizationMember, id) |> Repo.preload(:organization)    
organization_id = organization_member.organization.id
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-15 07:11:58

正如错误消息所述,%Ecto.Query{}不是可枚举的。如果您想要获得查询结果,必须调用存储库并将查询提供给它:

代码语言:javascript
复制
Repo.all from(o in Organization, order_by: o.name, select: {o.name, o.id})

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32576899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档