Haben Sie Vorschläge, wie kann ich das sauberer machen?Aufräumen Elixir/Phoenix Karte Ersatzcode
Video Params ist von einer Formularvorlage, also eine Karte als% {"url" => "https://youtube.com/ ......", "title" => "Karneval in Rio de Janeiro", ...}
defp make_url_ready_for_embedding(video_params) do
cond do
String.contains? video_params["url"], "/watch?v=" ->
video_params |> Map.put("url", String.replace(video_params["url"], "/watch?v=", "/embed/"))
String.contains? video_params["url"], "https://vimeo.com" ->
video_params |> Map.put("url", Regex.replace(~r/([^1-9]+)/, video_params["url"], "https://player.vimeo.com/video/"))
true ->
video_params
end
end
Hier ist meine create
Methode, wenn es von nutzen ist:
def create(conn, %{"video" => video_params}, user) do
changeset =
user
|> build_assoc(:videos)
|> Video.changeset(video_params |> make_url_ready_for_embedding)
case Repo.insert(changeset) do
{:ok, _video} ->
conn
|> put_flash(:info, "Video created successfully.")
|> redirect(to: video_path(conn, :index))
{:error, changeset} ->
render(conn, "new.html", changeset: changeset)
end
end
Danke. Betrachte es jetzt .... – skovmand
Ich denke, es ist schön. Ich habe die Funktionen in eine separate video_transformers.ex Datei verschoben und importiere sie jetzt – skovmand
Es gibt einen Tippfehler in der defp 'youtube_video?/1' Funktion: ' String.contains? (Url "https://vimeo.com") 'sollte ein Komma haben, damit es:' String.contains? (url, "https://vimeo.com") ' –