Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir插入记录给出未定义的方法_Elixir_Phoenix Framework_Ecto - Fatal编程技术网

Elixir插入记录给出未定义的方法

Elixir插入记录给出未定义的方法,elixir,phoenix-framework,ecto,Elixir,Phoenix Framework,Ecto,我正在努力实现:创造行动。这是我的代码库 defmodule Rumbl.Repo do use Ecto.Repo, otp_app: :rumbl end 对于User.ex模型 和我的控制器: defmodule Rumbl.UserController do use Rumbl.Web, :controller alias Rumbl.Repo alias Rumbl.User require Logger def new(conn,

我正在努力实现:创造行动。这是我的代码库

defmodule Rumbl.Repo do
  use Ecto.Repo, otp_app: :rumbl
end
对于User.ex模型

和我的控制器:

defmodule Rumbl.UserController do
    use Rumbl.Web, :controller

    alias Rumbl.Repo
    alias Rumbl.User

    require Logger

    def new(conn, _params) do
        changeset = User.changeset(%User{})
        render conn, "new.html", changeset: changeset
    end

    def create(conn, %{"user" => _params}) do
        changeset = User.changeset(%User{}, _params)
        case Repo.insert changeset do
            {:ok, user} ->
                conn
                |> put_flash(:info, "#{user.name} created!")
                |> redirect to: user_path(conn, :index)
            {:error, changeset} ->
                render conn, "new.html", changeset: changeset
        end
    end

    def index(conn, _params) do
        users = Repo.all(User)
        render conn, "index.html", users: users
    end

    def show(conn, %{"id" => id}) do
      user = Repo.get(User, String.to_integer(id))
      render conn, "show.html", user: user
    end

end
一旦我运行phoenix服务器,它会打开新页面,当我发送请求时,它会给我一个错误:

函数Rumbl.Repo.insert/1未定义或为专用函数


我错过了什么?

我误解了长生不老药的力量。实际上,为了解决一个问题,我必须写

sef create(conn, %{"user" => user_params}) do
        changeset = User.changeset(%User{}, user_params)
        case Repo.insert changeset do
            {:ok, user} ->
                conn
                |> put_flash(:info, "#{user.name} created!")
                |> redirect to: user_path(conn, :index)
            {:error, changeset} ->
                render conn, "new.html", changeset: changeset
        end
    end

我误解了长生不老药的力量。实际上,为了解决一个问题,我必须写

sef create(conn, %{"user" => user_params}) do
        changeset = User.changeset(%User{}, user_params)
        case Repo.insert changeset do
            {:ok, user} ->
                conn
                |> put_flash(:info, "#{user.name} created!")
                |> redirect to: user_path(conn, :index)
            {:error, changeset} ->
                render conn, "new.html", changeset: changeset
        end
    end

您是否可以尝试使用Repo.insertchangeset而不是Repo.insert changeset请注意额外的参数。@JustinWood我怀疑这是否有意义,因为错误消息清楚地表明它识别了Rumbl.Repo.insert/1的arity。我同意,但从提供的代码中,我看不到任何错误。您能从错误消息中添加更多信息吗?此外,如果要在create函数中使用params变量,请不要在其前面加上x。_uu表示您不关心该变量。是否可以尝试使用Repo.insertchangeset而不是Repo.insert changeset请注意额外的参数。@JustinWood我怀疑这是否重要,因为错误消息清楚地表明它识别了Rumbl.Repo.insert/1的arity。我同意,但根据提供的代码,我看不到任何错误。您能从错误消息中添加更多信息吗?此外,如果要在create函数中使用params变量,请不要在其前面加上x。_uu表示您不关心该变量。