2016-10-26 3 views
0

Im Anschluss an diese Jose Valim Post, ich am Ende mit einem verschachtelten Tupel von HTML-Informationen aus dem Anruf an .Phoenix: Render content_tag als HTML?

{:safe, 
[60, "div", " class=\"form-group \"", 62, 
    [[60, "label", " class=\"control-label\" for=\"_username\"", 62, "Username", 
    60, 47, "label", 62], 
    [60, "textarea", 
    " class=\"form-control\" id=\"_username\" name=\"[username]\"", 62, 
    ["\n", "username"], 60, 47, "textarea", 62], ""], 60, 47, "div", 62]} 

Ich möchte einen Test schreiben, um die Ausgabe zu überprüfen, aber ich würde lieber überprüfen Sie die generierten HTML-Code als die verschachtelte Tupel. Wie kann ich dieses Ergebnis in HTML rendern?

Antwort

4

Sie Phoenix.HTML.Safe.to_iodata und IO.iodata_to_binary verwenden können, dass in einen String zu konvertieren:

iex(1)> raw = {:safe, 
...(1)> [60, "div", " class=\"form-group \"", 62, 
...(1)> [[60, "label", " class=\"control-label\" for=\"_username\"", 62, "Username", 
...(1)>  60, 47, "label", 62], 
...(1)> [60, "textarea", 
...(1)>  " class=\"form-control\" id=\"_username\" name=\"[username]\"", 62, 
...(1)>  ["\n", "username"], 60, 47, "textarea", 62], ""], 60, 47, "div", 62]} 
iex(2)> raw |> Phoenix.HTML.Safe.to_iodata |> IO.iodata_to_binary |> IO.puts 
<div class="form-group "><label class="control-label" for="_username">Username</label><textarea class="form-control" id="_username" name="[username]"> 
username</textarea></div>