Phoenix - (ErlangError)erlang错误::"模块无法加载"

时间:2015-10-25 18:13:09

标签: elixir phoenix-framework

我有一个简单的Phoenix Channel来处理消息的websockets。我尝试将模型的插入添加到数据库中,并在我传递这些消息参数时收到此错误。

def handle_in("new:msg", msg, socket) do
  message_params = %{"body" => msg["body"]}
  changeset = Message.changeset(%Message{}, message_params)

  case Repo.insert(changeset) do
    {:ok, room} ->
      broadcast! socket, "new:msg", %{user: msg["user"], body: msg["body"]}
      {:reply, {:ok, %{msg: msg["body"]}}, assign(socket, :user, msg["user"])}
    {:error, changeset} ->
  end
end

这是错误。关于这可能是什么的任何想法都非常受欢迎。

Repo.insert(%Ecto.Changeset{action: nil, changes: %{body: "feaflje"}, constraints: [], errors: [], filters: %{}, model: %PulseApi.Message{__meta__: #Ecto.Schema.Metadata<:built>, body: nil, id: nil, inserted_at: nil, room: #Ecto.Association.NotLoaded<association :room is not loaded>, room_id: nil, updated_at: nil}, optional: [], opts: [], params: %{"body" => "feaflje"}, repo: nil, required: [:body], types: %{body: :string, id: :id, inserted_at: Ecto.DateTime, room_id: :id, updated_at: Ecto.DateTime}, valid?: true, validations: []})

1 个答案:

答案 0 :(得分:0)

我必须将项目名称添加到正确的名称空间Repo中才能使其正常工作。

Repo必须是ProjectName.Repo

case PulseApi.Repo.insert(changeset) do
  {:ok, room} ->
    broadcast! socket, "new:msg", %{user: msg["user"], body: msg["body"]}
    {:reply, {:ok, %{msg: msg["body"]}}, assign(socket, :user, msg["user"])}
  {:error, changeset} ->
end