我对这种凤凰行为感到困惑。它是一个包含两个应用程序的伞形项目:lib和web。这是伞mix.config:
defp deps do
[{:phoenix, "~> 1.2.1"},
{:phoenix_pubsub, "~> 1.0"},
{:phoenix_html, "~> 2.6"},
{:phoenix_ecto, "~> 3.0"},
{:gettext, "~> 0.11"},
{:cowboy, "~> 1.0"},
{:lib, in_umbrella: true}
]
端
有一个简单的new.html.eex
文件,它是发布此控制器功能的形式:
def create(conn, %{"list" => list}) do
changeset = List.changeset(%List{}, list)
# BLOCK 1
# case Repo.insert changeset do
# {:ok, %{id: id}} -> redirect conn, to: list_path(conn, :show, id)
# {:error, reasons} -> render conn, "new.html", changeset: reasons
# end
# BLOCK 2
case ListQuery.create changeset do
{:ok, %{id: id}} -> redirect conn, to: list_path(conn, :show, id)
{:error, reasons} -> render conn, "new.html", changeset: reasons
end
end
// ListQuery.create
def create(list) do
Repo.insert(list)
end
如果我提交空白表格(无效),而BLOCK 2被取消注释,如图所示,没有任何案例模式匹配,并显示phoenix调试错误页面。
如果取消注释BLOCK 1(并注释BLOCK 2),则错误模式匹配,我看到在表单上呈现的错误消息的new.html.eex模板。
如果使用ListQuery.create,有人可以解释为什么忽略模式吗?
由于