フェニックスの Ecto モデルに関連付けを設定しています。組織には多くの OrganizationMembers があります。OrganizationMember コントローラーの Edit メソッドで、選択するすべての組織を保持する SELECT 要素を作成しようとしています。編集定義には、次の 2 行があります。
# 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 が #Ecto.Query に実装されていません
最初の行を使用して 2 番目の行にコメントを付けると、コントローラーで次のエラーが発生します。
protocol Enumerable が #Ecto.Query に実装されていません
選択ドロップダウンと値を正しく表示するにはどうすればよいですか? ところで、organization_id は次のようになります。
organization_member = Repo.get!(OrganizationMember, id) |> Repo.preload(:organization)
organization_id = organization_member.organization.id