我的应用程序和api json请求以及常规html。我的router.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
我的web / 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
和我的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
我的网站/ views / v1 / user_view.ex
defmodule MyApp.V1.UserView do
use MyApp.Web, :view
...
end
和我的网站/ views / user_view.ex
defmodule MyApp.UserView do
use MyApp.Web, :view
end
在为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)
但如果删除web / vews / user_view.ex,则此查询可以正常运行。 你怎么能纠正这个错误?
答案 0 :(得分:1)
通常可以通过运行mix clean来解决这些类型的错误。在dev中重新加载Live代码期间,您可能还会看到此类错误。在这种情况下,请尝试重新启动Phoenix.Server,如果这样做无效,请运行mix clean