Elixir
Phoenix

日時タプルを文字列に変換

Ecto等で取得した日時は、{ { 2018, 1, 26 }, { 0, 17, 53 } }のような、タプルとなっているため、Web上でそのまま表示できないので、文字列に変換してあげる必要がある

Elixirらしく、値の型を、関数のガード節で呼び分けする

defmodule On do
    def view( dt_tuple ) when is_tupl( dt_tuple ) do
        dt_tuple 
        |> Timex.to_datetime 
        |> DateTime.to_string 
        |> String.slice( 0..-2 )
    end
    def view( value), do: value
end

Phoenix等で実際に使う際は、こんな感じ

<table>
<tr>
<%= for caption <- map_list |> List.first |> Map.keys() do %>
    <th><%= caption %></th>
<% end %>
</tr>
<tr>
<%= for record <- map_list do %>
    <%= for column <- record |> Map.keys() do %>
    <td><%= record[ column ] |> On.view %></td>
    <% end %>
<% end %>
</tr>
</table>

p.s.福岡でElixirプロダクション採用を推進するコミュニティ「fukuoka.ex」のMeetUp#5「福岡におけるElixirの進化」は、こんな感じでワイワイやっています(地味に女子率多し)

image.png