小编Jak*_*lak的帖子

Ecto 变更集和多对多关联“无效”错误

我有具有多对多关联的银行货币模式。我为银行创建了一个表单,其中包含货币选择。

银行.ex

schema "banks" do
  field :name, :string
  many_to_many :currencies, App.Currency, join_through: "banks_currencies"
end

@required_fields ~w(name)
@optional_fields ~w()

def changeset(model, params \\ %{}) do
  model
  |> cast(params, @required_fields, @optional_fields)
  |> cast_assoc(:currencies)
end
Run Code Online (Sandbox Code Playgroud)

表单.html.ex

<%= multiple_select(form, :currencies, @currencies) %>
Run Code Online (Sandbox Code Playgroud)

问题是:当我提交选择了某些货币的表单时,变更集返回“无效”错误。我在iex中模拟了:

iex(8)> App.Bank.changeset bank, %{"currencies" => ["1"]}  
#Ecto.Changeset<action: nil, changes: %{},
 errors: [currencies: {"is invalid", [type: {:array, :map}]}],
 data: #App.Bank<>, valid?: false>
Run Code Online (Sandbox Code Playgroud)

我安装了最新的 Phoenix,最近从 1.1.4 升级到 1.2

elixir ecto phoenix-framework

5
推荐指数
1
解决办法
1281
查看次数

标签 统计

ecto ×1

elixir ×1

phoenix-framework ×1