formex_ecto v0.2.3 Formex.Ecto.Controller View Source

Ecto helpers for controller.

Installation:

web/web.ex

def controller do
  quote do
    use Formex.Ecto.Controller
  end
end

Usage

CRUD

def new(conn, _params) do
  form = create_form(App.ArticleType, %Article{})
  render(conn, "new.html", form: form)
end
def create(conn, %{"article" => article_params}) do
  App.ArticleType
  |> create_form(%Article{}, article_params)
  |> insert_form_data
  |> case do
    {:ok, _article} ->
      # ...
    {:error, form} ->
      # ...
  end
end
def edit(conn, %{"id" => id}) do
  article = Repo.get!(Article, id)
  form = create_form(App.ArticleType, article)
  render(conn, "edit.html", article: article, form: form)
end
def update(conn, %{"id" => id, "article" => article_params}) do
  article = Repo.get!(Article, id)

  App.ArticleType
  |> create_form(article, article_params)
  |> update_form_data
  |> case do
    {:ok, article} ->
      # ...
    {:error, form} ->
      # ...
  end
end

Link to this section Summary

Link to this section Functions

Link to this function insert_form_data(form) View Source
insert_form_data(Formex.Form.t) ::
  {:ok, Ecto.Schema.t} |
  {:error, Formex.Form.t}

Works same as Formex.Controller.handle_form/2, but also invokes Ecto.Repo.insert/2

Link to this function update_form_data(form) View Source
update_form_data(Formex.Form.t) ::
  {:ok, Ecto.Schema.t} |
  {:error, Formex.Form.t}

Works same as Formex.Controller.handle_form/2, but also invokes Ecto.Repo.update/2