Skip to content

Instantly share code, notes, and snippets.

@alduro
Last active April 17, 2017 01:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alduro/7c1140d62a795d9d50e017d4315a6f5d to your computer and use it in GitHub Desktop.
Save alduro/7c1140d62a795d9d50e017d4315a6f5d to your computer and use it in GitHub Desktop.
Part of the code in the controller
if changeset_order.valid? do
Repo.transaction fn ->
# Save Order
order = changeset_order
|> Repo.insert!
|> Repo.preload(:buyer)
# Save Order Products
Enum.map(order_products, fn order_product ->
order_product = Repo.insert!(order_product) |> Repo.preload(:order)
changeset = Ecto.Changeset.change(order_product) |> Ecto.Changeset.put_assoc(:order, order)
Repo.update!(changeset)
end)
CheckoutService.charge_customer(total_amount, "fake-valid-nonce")
render conn, "show.json", order: order
end
else
render conn, ExRushlookApi.ChangesetView, "error.json", changeset: changeset_order
end
Template Views
defmodule ExRushlookApi.OrderView do
use ExRushlookApi.Web, :view
def render("index.json", %{orders: orders}) do
%{data: render_many(orders, __MODULE__, "order.json")}
end
def render("show.json", %{order: order}) do
%{data: render_one(order, __MODULE__, "order.json")}
end
def render("order.json", %{order: order}) do
order |> IO.inspect
%{id: Map.get(order, :id)}
end
def render("errors.json", %{errors: errors}) do
%{errors: render_many(errors, __MODULE__, "error.json")}
end
def render("error.json", %{error: error}) do
%{
key: error.key,
value: error.value
}
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment