我的应用程序适用于 api json 请求和常规 html。我的路由器.ex
defmodule MyApp.Router do
use MyApp.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 "/api", MyApp do
pipe_through :api # Use the default browser stack
scope "/v1", V1, as: :v1 do
resources "/users", UserController, except: [:new, :edit, :index]
end
end
scope "/", MyApp do
pipe_through :browser # Use the default browser stack
get "/confirm/:token", UserController, :confirm, as: :user_confirm
end
end
Run Code Online (Sandbox Code Playgroud)
我的网站/controllers/v1/user_controller.ex
defmodule MyApp.V1.UserController do
use MyApp.Web, :controller
def create(conn, %{"user" => user_params}) do
...
conn
|> put_status(:created)
|> put_resp_header("location", v1_user_path(conn, :show, user))
|> render("sign_up.json", user: Map.put(user, :session, result[:session]))
...
end
Run Code Online (Sandbox Code Playgroud)
和我的 web/controllers/user_controller.rb
defmodule MyApp.UserController do
use MyApp.Web, :controller
alias MyApp.User
def confirm(conn, %{"token" => token}) do
...
render(conn, "confirmed.html")
...
end
end
Run Code Online (Sandbox Code Playgroud)
我的网站/views/v1/user_view.ex
defmodule MyApp.V1.UserView do
use MyApp.Web, :view
...
end
Run Code Online (Sandbox Code Playgroud)
和我的 web/views/user_view.ex
defmodule MyApp.UserView do
use MyApp.Web, :view
end
Run Code Online (Sandbox Code Playgroud)
一切工作正常,直到我添加了一个路由和一个 html 控制器。现在,当我请求 api json 时,出现错误
Request: POST /api/v1/users
** (exit) an exception was raised:
** (UndefinedFunctionError) function MyApp.V1.UserView.render/2 is undefined (module MyApp.V1.UserView is not available)
Run Code Online (Sandbox Code Playgroud)
但是如果我删除 web/vews/user_view.ex,那么这个查询就可以正常工作。如何纠正这个错误?
这些类型的错误通常可以通过运行 mix clean 来解决。在开发中重新加载实时代码期间,您也可能会看到此类错误。在这种情况下,尝试重新启动 Phoenix.Server,如果没有帮助,请运行mix clean
| 归档时间: |
|
| 查看次数: |
3574 次 |
| 最近记录: |