elixir - Phoenix - ProjWeb.UserController.sign_in/2 中没有函数子句匹配
问题描述
我已经定义了以下路线
router.ex
scope "/api/v1", ProjWeb do
pipe_through :api
post "/sign_up", UserController, :sign_up
post "/sign_in", UserController, :sign_in
end
这是控制器动作
def sign_up(conn, %{"user" => user_params}) do
# example code
# response
end
def sign_in(conn, %{"user" => %{"email" => email, "password" => password}}) do
### resp
end
/api/v1/sign_up
使用以下有效负载
{
"user": {
"email": "krishna@example.com",
"name": "Krishna",
"password": "SUPER_SECRET_PASS!"
}
}
/api/v1/sign_in
具有以下有效载荷
{
"user": {
"email": "krishna@example.com",
"password": "SUPER_SECRET_PASS!"
}
}
抛出以下错误
no function clause matching in ProjWeb.UserController.sign_in/2
日志:
# 1
%Plug.Conn{adapter: {Plug.Cowboy.Conn, :...}, assigns: %{}, before_send:...}
# 2
%{}
解决方案
您的有效负载似乎没有正确通过,因为您传递的第二个参数是一个空映射(请参阅日志)。由于您的sign_in
函数需要一个带有user
键的结构,因此它无法匹配您的调用。
推荐阅读
- scala - spark load textfile-based hive table as a dataframe (scala)
- python - Installing TensorFlow binaries supporting AVX, FMA, SSE for Python 3.6 and TF 1.12..0
- dart - How to space columns evenly by the top icon and not by the text underneath the icon in a row
- javascript - 以这种方式使用 shortid.generate() 设置唯一的反应键?
- javascript - vue.js:以反应方式更改表的值
- google-fabric - Why we cannot receive emai from fabric?
- r - R non-standard evaluation : get promise value while leaving it unevaluated [or: keep external pointer valid...]
- tsql - 如何使用表类型上的字段?
- reactjs - Program not rerendering after setstate is called.react
- angularjs - 如何使 ReactJs 和 AngularJs 在 ASP.Net Core Web 应用程序中共存?