0
changeset에 관계를 저장하기 위해 many_to_many 관계를 나타내는 체크 상자가있는 양식의 결과를 얻는 가장 좋은 방법은 무엇입니까? 스키마 :many_to_many, checkboxes and cast_assoc
schema "users" do
field :name, :string
field :email, :string
field :active, :boolean, default: true
has_many :products, TestExAdmin.Product
has_many :noids, TestExAdmin.Noid
many_to_many :roles, TestExAdmin.Role, join_through: TestExAdmin.UserRole
end
체크 박스 :
<div class="form-group">
<label class="col-sm-2 control-label" for="user_roles">Roles</label>
<div class="col-sm-10">
<input name="user[roles][]" type="hidden" value="">
<div class="checkbox"><label><input type="checkbox" name="user[roles][1]">role1</label></div>
</div>
</div>
변경 집합 :
def changeset(model, params \\ %{}) do
model
|> cast(params, @required_fields, @optional_fields)
|> cast_assoc(:noids, required: false)
|> cast_assoc(:products, required: false)
|> cast_assoc(:roles, required: false)
end
PARAMS 수신 :
%{email: "[email protected]", name: "Cory",
products: %{"1481120458618": %{_destroy: "0", price: "13.00",
title: "A product title"}}, roles: %{"1": "on"}}
여기
은 일례이며
나는 현재 오류 :
errors: [roles: {"is invalid", [type: {:array, :map}]
나는이 문제를 해결하지만, 관용적 솔루션이 있다면 제가 궁금 도움이 플러그인, https://github.com/adam12/phoenix_mtm을 발견했다.
감사합니다, 코리 오류로
"현재 오류가 발생했습니다."어떤 오류가 발생 했습니까? – Dogbert
감사합니다 @Dogbert 방금 추가 한 내용을 % {email : "[email protected]", 이름 : "Cory", 제품 : % { "1481122377646": % {_ destroy : "0", price : "# Ecto.Changeset, 제목 :"제품 제목 "}, 오류 : [], 데이터 : # TestExAdmin.Product <>, valid ?: true>]} errors : [roles : { "is invalid", [type : {: array, : map}]}], data : # TestExAdmin.User <> , 유효? : false> –
elixir ecto google 그룹 요청 : https://groups.google.com/d/msg/elixir-ecto/s4heBr GN9J0/jwBFx3GBBAAJ –