簡體   English   中英

Elixir Phoenix.Route.NoRouteError

[英]Elixir Phoenix.Route.NoRouteError

我正在閱讀“ Programming Phoenix”一書,並在第60頁附近添加了/ Users / New路由后,我的路由器似乎已停止正常運行。

當我嘗試導航到任何/用戶路線時,我得到

“找不到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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM