凤凰视图模块不可用

时间:2017-04-16 20:51:05

标签: phoenix-framework

我的应用程序和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,则此查询可以正常运行。 你怎么能纠正这个错误?

1 个答案:

答案 0 :(得分:1)

通常可以通过运行mix clean来解决这些类型的错误。在dev中重新加载Live代码期间,您可能还会看到此类错误。在这种情况下,请尝试重新启动Phoenix.Server,如果这样做无效,请运行mix clean

相关问题