概要
Phoenixでアンケートフォーム作成アプリを作ろうとした際、自動生成したLiveViewのページで要素の作成が出来なくなることがあったので、そのことについて書きます。
環境
OS:Ubuntu22.04LTS(WSL)
Elixir version:1.16.1-otp-26
Phoenix Framework version:1.7.11
エラー内容
新しく作成したPhoenixプロジェクトで、最初にフォーム作成のためのページを作ろうと以下のようなコマンドでページを生成しました。
$ mix phx.gen.live Forms Form forms title:string type:integer deadline:naive_datetime
生成したページで試しにフォームを作成しようとすると、何らかの項目を入力したとたんに画面がリロードされてしまう事態が発生しました。
解決
プロジェクトの再構築やフォームの内容の変更を何度か試しましたがフォームの作成がうまくいかず、原因を探っているとPhoenixの関数名などでformという単語が多く使われていることに気づき、試しにテーブル名やリソース名などを変更して以下のような生成コマンドで新しくLiveViewページを作成しました。
$ mix phx.gen.live Questions Question questions title:string type:integer deadline:naive_datetime
生成したページでフォーム作成を試してみると、今度はすんなりと成功しました。
結論
Phoenixフレームワークでリソース名やテーブル名にFormという名称を使うと、挙動がおかしくなることが分かりました。