Giter Club home page Giter Club logo

Comments (11)

eric-roland avatar eric-roland commented on July 25, 2024

I saw the same behavior. cast "works" until you try to getting the scope. When I use cast_attachements, I get an error from Phoenix, no function clause matching in Phoenix.HTML.Safe.Tuple.to_iodata.

from arc_ecto.

blisscs avatar blisscs commented on July 25, 2024

Hi @knewter and @eric-roland

I am getting that error too.
Has anybody figured a workaround to this issue to make it works.

from arc_ecto.

stavro avatar stavro commented on July 25, 2024

Sorry guys!

I just saw these comments - No idea why they didn't come to my email. I am looking into this now.

from arc_ecto.

stavro avatar stavro commented on July 25, 2024

Can you post an example that you are having problems with?

I currently do not try to combine calls to cast and cast_attachments. This is how I currently use it:

  def update(user, params) do
    user
    |> cast(params, ~w(), ~w(first_name last_name email))
    |> cast_attachments(params, ~w(), ~w(avatar))
  end

from arc_ecto.

stavro avatar stavro commented on July 25, 2024

@knewter Thanks for the Elixir Sips writeup! I'm going to have to check it out :)

from arc_ecto.

blisscs avatar blisscs commented on July 25, 2024

Hi @stavro,
I think the above update/2 function is a changeset/2 for the model's changeset function. If not please correct me.

def changeset(user,params) do
  user
     |> cast(params, ~w(), ~w(first_name last_name email))
     |> cast_attachments(params, ~w(), ~w(avatar))
end

I tried using that for the defination of changeset/2 defination model I still get the error "unsupported dict: :empty" when creating a changeset in the function new of the controller

def new(conn, _params) do
    changeset =  Upload.changeset(%Upload{})
    render  conn, "new.html", changeset: changeset
end

My Upload model look like this -

defmodule BlogCswebInTh.Upload do
  use BlogCswebInTh.Web, :model
  use Arc.Ecto.Model

  schema "uploads" do
    field :title, :string
    field :file, BlogCswebInTh.UploadFile.Type
    timestamps
  end

  @required_fields ~w(title file) 
  @optional_fields ~w()

  @doc """
  Creates a changeset based on the `model` and `params`.

  If no params are provided, an invalid changeset is returned
  with no validation performed.
  """
  def changeset(model, params \\ :empty) do
    model
      |> cast(params, @required_fields, @optional_fields)
      |> cast_attachments(params, @required_fields, @optional_fields)
      |> validate_length(:title, min: 1)
  end
end

And my uploader look like this -

defmodule BlogCswebInTh.UploadFile do
  use Arc.Definition
  use Arc.Ecto.Definition

  @versions [:original]
end

from arc_ecto.

stavro avatar stavro commented on July 25, 2024

@blisscs Two things:

  1. Separate out the fields you send to cast and cast_attachments. Use cast for all attributes other than file, and use cast_attachments for your file parameters. Right now you are specifying the same @required_fields for both.
  2. The library was not properly supporting a value of :empty as the params. Please upgrade your arc_ecto dependency to v0.1.2, try again, and let me know!

from arc_ecto.

blisscs avatar blisscs commented on July 25, 2024

I have seperated out the fields for the cast and cast_attachements the above changeset/2 function above and updated arc_ecto to v0.1.2
Please see code below.

def changeset(model, params \\ :empty) do
    model
      |> cast(params, ~w(title), ~w())
      |> cast_attachments(params, ~w(file),~w() )
      |> validate_length(:title, min: 1)
  end

After doing so I got the error

undefined function: Ecto.Changeset.__changeset__/0

screen shot 2015-09-01 at 09 55 37

Thank you @stavro for your help in this.

from arc_ecto.

stavro avatar stavro commented on July 25, 2024

@blisscs Thank you for the feedback. I believe this is an issue in Ecto (Reported at: elixir-ecto/ecto#914)

If you want to get around the issue temporarily, replace the atom :empty with an empty map (%{})

def changeset(model, params \\ %{}) do
    model
      |> cast(params, ~w(title), ~w())
      |> cast_attachments(params, ~w(file),~w() )
      |> validate_length(:title, min: 1)
  end

from arc_ecto.

stavro avatar stavro commented on July 25, 2024

Usage of the :empty atom has been fixed in Ecto master. Until the next released version, either reference git directly, or use an empty map (%{}) instead of the :empty atom.

If you notice any other issues please open a new issue.

Thanks!

from arc_ecto.

nirev avatar nirev commented on July 25, 2024

Thanks for the detailed answer, @stavro!
I'm just starting with Elixir/Phoenix and got the changeset/0 error above, nice to find all the answers I needed here :)

from arc_ecto.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.