Elixir Phoenix变更集错误

Elixir Phoenix变更集错误,elixir,phoenix-framework,Elixir,Phoenix Framework,我对凤凰的这种行为感到困惑。它是一个包含两个应用程序的总括项目:lib和web。以下是umbrary 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和web。以下是umbrary 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
文件,它是一个表单,用于向该控制器函数发送post:

  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

如果我提交空白表单(无效),如图2所示未注释,则没有一个实例模式匹配,并且显示了“凤凰”调试错误页。

如果取消注释块1(和注释块2),则错误模式匹配,并且我看到表单上呈现了带有错误消息的new.html.eex模板

有人能解释一下,如果使用ListQuery.create,为什么会忽略这些模式吗


谢谢

您显示的代码不应该出现这种情况。最简单的方法是调用并输出
ListQuery.create(change)
的值,看看它是什么。它应该可以工作。。。还有-为什么要将Repo函数包装到其他函数中?@PatNowak查询和命令函数被抽象到该模块中,主要用于测试和更清晰的代码。@JustinWood由于项目是一个保护伞,我没有意识到库中的更改不是由phoenix.server选择的。伞需要重新编译。总之,代码是有效的。。。谢谢你的帮助。@sheldon_cooper在伞的根部运行服务器。其他应用程序中的更改将重新编译。