One day, my Phoenix project got error as follows:
== Compilation error in file lib/spending_web/views/expense_view.ex ==
** (FunctionClauseError) no function clause matching in anonymous fn/1 in EEx.Compiler.tokenize/6The following arguments were given to anonymous fn/1 in EEx.Compiler.tokenize/6: # 1 {{1, 28}, [102, 111, 117, 110, 100, 32, 113, 117, 111, 116, 101, 100, 32, 107, 101, 121, 119, 111, 114, 100, 32, 34, 'ffff', 34, 32, 98, 117, 116, 32, 116, 104, 101, 32, 113, 117, 111, 116, 101, 115, 32, 97, 114, 101, 32, 110, 111, 116, 32, ...]} (eex 1.14.3) lib/eex/compiler.ex:68: anonymous fn/1 in EEx.Compiler.tokenize/6 (elixir 1.14.3) lib/enum.ex:975: Enum."-each/2-lists^foreach/1-0-"/2 (eex 1.14.3) lib/eex/compiler.ex:68: EEx.Compiler.tokenize/6 (eex 1.14.3) lib/eex.ex:218: EEx.compile_string/2 (phoenix_template 1.0.1) lib/phoenix/template.ex:409: anonymous fn/4 in Phoenix.Template.__compile_all__/5 (elixir 1.14.3) lib/enum.ex:1780: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3 (elixir 1.14.3) lib/enum.ex:1780: Enum."-map_reduce/3-lists^mapfoldl/2-0-"/3 (phoenix_template 1.0.1) lib/phoenix/template.ex:405: Phoenix.Template.__compile_all__/5 /home/Elixir/spending/lib/spending_web/views/expense_view.ex:1: (file) (stdlib 4.2) erl_eval.erl:748: :erl_eval.do_apply/7 (stdlib 4.2) erl_eval.erl:961: :erl_eval.expr_list/7 (stdlib 4.2) erl_eval.erl:454: :erl_eval.expr/6 (stdlib 4.2) erl_eval.erl:961: :erl_eval.expr_list/7 (stdlib 4.2) erl_eval.erl:454: :erl_eval.expr/6 (stdlib 4.2) erl_eval.erl:961: :erl_eval.expr_list/7 (stdlib 4.2) erl_eval.erl:454: :erl_eval.expr/6 (stdlib 4.2) erl_eval.erl:961: :erl_eval.expr_list/7 (stdlib 4.2) erl_eval.erl:454: :erl_eval.expr/6 (stdlib 4.2) erl_eval.erl:492: :erl_eval.expr/6
I found that bug is from this line of code in form.heex
<%= multiple_select f, :by, ["ffff": "ffff", "yy": "yy"] %>
I don’t know why this error happened, because my usage is similar to the doc. When I transformed the line to
<%= multiple_select f, :by, [{"ffff", "ffff"}, {"yy", "yy"}] %>
The error disappeared. I still don’t know why.
Phoenix version is 1.6.15