elixir - Elixir Phoenix.Route.NoRouteError
问题描述
我正在阅读“Programming Phoenix”一书,在第 60 页左右添加 /Users/New 路由后,我的路由器似乎已停止正常运行。
当我尝试导航到任何 /Users 路线时,我得到
“找不到 GET /Users (Rumbl.Router) 的路由”
我的 router.ex 文件如下所示:
defmodule Rumbl.Router do
use Rumbl.Web, :router
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :protect_from_forgery
plug :put_secure_browser_headers
end
pipeline :api do
plug :accepts, ["json"]
end
scope "/", Rumbl do
pipe_through :browser # Use the default browser stack
get "/", PageController, :index
resources "/users", UserController, only: [:index, :show, :new, :create]
end
end
我的控制器如下所示:
defmodule Rumbl.UserController do
use Rumbl.Web, :controller
alias Rumbl.User
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, id)
render conn, "show.html", user: user
end
def new(conn, _params) do
changeset = User.changeset(%User{})
render conn, "new.html", changeset: changeset
end
end
运行“mix phoenix.routes”返回:
page_path GET / Rumbl.PageController :index
user_path GET /users Rumbl.UserController :index
user_path GET /users/new Rumbl.UserController :new
user_path GET /users/:id Rumbl.UserController :show
user_path POST /users Rumbl.UserController :create
在添加“新”路线之前,它运行良好。我已经尝试删除新路线(以及随之而来的所有内容)并恢复到以前的方式
get "/users", UserController, :index
get "/users/:id", UserController, :show
它仍然不起作用。
我重新启动了 phoenix 服务器并尝试从头开始重新创建 router.ex 文件。我很茫然,这可能是怎么回事?
这是堆栈跟踪:
[debug] ** (Phoenix.Router.NoRouteError) no route found for GET /Users (Rumbl.Router)
(rumbl) web/router.ex:1: Rumbl.Router.__match_route__/4
(rumbl) lib/phoenix/router.ex:307: Rumbl.Router.call/2
(rumbl) lib/rumbl/endpoint.ex:1: Rumbl.Endpoint.plug_builder_call/2
(rumbl) lib/plug/debugger.ex:122: Rumbl.Endpoint."call (overridable 3)"/2
(rumbl) lib/rumbl/endpoint.ex:1: Rumbl.Endpoint.call/2
(plug_cowboy) lib/plug/cowboy/handler.ex:18: Plug.Adapters.Cowboy.Handler.upgrade/4
(cowboy) /Users/richardschmidt/Code/Elixir/rumbl/deps/cowboy/src/cowboy_protocol.erl:442: :cowboy_protocol.execute/4
解决方案
/Users
并且/users
不一样。
尝试使用路径的小写版本:/users
, /users/new
.
推荐阅读
- karate - 如何获得加特林空手道模拟响应
- javascript - 模态出现后不可点击 - Safari
- javafx - 通过不使用 fxml 的按钮单击在选项卡中加载阶段
- scala - 如何使用 docker 将参数传递给 spark-submit
- c# - Sonar Qube 没有使代码覆盖生效
- bixby - 如何在 bixby 中捕获用户的负面响应
- android - GSON 反序列化 ClassCastException
- c# - 从签名文件中获取 SignedCms 的 C# 实现
- c - 在使用 C 特定修改时使用 html 标签控制 tizen 应用程序标签大小和格式
- javascript - 将段落拆分为数组 javascript