Phoenixでフォーム入力させる際、フォーム入力後と、フォーム未入力時や初期状態で、挙動をスイッチする場合、Elixirの関数パターンマッチが便利
foo.html.eex
<input type="text" name="basis_date" value="<%= params[ "basis_datetime" ] %>" id="datepicker"></td>
この例では、basis_dateへの日付入力(jQuery UIのDatepickerを利用)があれば、basis_date以降の更新日付をSQLのwhere句として返し、入力が無い場合や、初期状態(nil)の場合は、where句を指定しないという挙動スイッチをしている
sql = "select * from customer #{ basis_date_where( params[ "basis_date" ] ) }"
def basis_date_where( "" ), do: ""
def basis_date_where( nil ), do: ""
def basis_date_where( basis_date ), do: "where updated_at >= '#{ basis_date }' "