Skip to content

Instantly share code, notes, and snippets.

@chrismcg
Created August 6, 2015 09:44
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 chrismcg/c9fcf47bd492c44668fe to your computer and use it in GitHub Desktop.
Save chrismcg/c9fcf47bd492c44668fe to your computer and use it in GitHub Desktop.
defmodule Sheep.PageController do
use Sheep.Web, :controller
alias Sheep.Repo
alias Sheep.MailingListAddress
def index(conn, _params) do
render conn, "index.html"
end
def new_email(conn, params) do
changeset = MailingListAddress.changeset %MailingListAddress{}, params
render_email_response conn, Repo.insert(changeset), params
end
defp render_email_response(conn, {:ok, _}, %{"format" => "html"} = params) do
conn
|> put_flash(:email_success, params["email"] <> " is nu aangemeld voor de nieuwsbrief !")
|> redirect(to: page_path(conn, :index))
end
defp render_email_response(conn, {:error, changeset}, %{"format" => "html"} = params) do
conn
|> put_flash(:email_error, params["email"] <> " #{changeset.errors[:email]}")
|> redirect(to: page_path(conn, :index))
end
defp render_email_response(conn, {:ok, _}, %{"format" => "json"} = params) do
json conn, %{success: true}
end
defp render_email_response(conn, {:error, changeset}, %{"format" => "json"} = params) do
conn
|> put_status(500)
|> json %{error: changset.errors[:email]}
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment