我有以下模型,对于我正在使用Arc模块进行上传的图像
defpodule Chemical.Info do 使用Chemical.Web,:modelschema "infos" do field :title, :string field :shortdesc, :string field :longdesc, :string field :images, Chemical.ImageUploader.Type field :regions, :string field :startdate, :date field :enddate, :date field :status, :string field :createdby, :string field :approvedby, :string timestamps() end @required_fields ~w(title shortdesc startdate enddate ) @optional_fields ~w(longdesc regions status createdby approvedby) @required_file_fields ~w() @optional_file_fields ~w(images) def changeset(model, params \\ :empty) do model |> cast(params, @required_fields, @optional_fields) |> cast_attachments(params, @required_file_fields, @optional_file_fields ) end
端
控制器中的新功能
def new(conn, _params) do changeset = Info.changeset(%Info{}) render conn, "new.html", changeset: changeset end
在访问返回新表单的/ new操作时,我在cast_attachments函数调用中收到以下错误
没有case子句匹配:: empty
如果我删除了cast_attachments行,它会显示新表单。 Arc版本为0.6.0,arc_ecto为0.5.0。 我正在使用本地存储,因此Arc生成了默认上传器。
答案 0 :(得分:1)
自Ecto 2.0起,不推荐将:empty
作为params
传递,而采用空地图(%{}
)。看起来arc_ecto 0.5.0不再允许发送:empty
而不是发出警告。您需要将:empty
更改为%{}
作为params
的默认值:
def changeset(model, params \\ :empty) do
- >
def changeset(model, params \\ %{}) do