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表示您不关心该变量。