我尝试了几次不同的迭代,但是在编译时始终出现此错误:
Routes.session_path/2 is undefined (module Routes is not available)
我的代码:
defmodule Blackbook.Plugs.RequireAuth do
import Plug.Conn
import Phoenix.Controller
alias Blackbook.Router.Helpers, as: Routes
def init(_params) do
end
def call(conn, _params) do
if conn.assigns[:current_user] do
conn
else
conn
|> put_flash(:error, "You must be logged in.")
|> redirect(to: Routes.session_path(conn, :new))
|> halt()
end
end
end
Phoenix 1.4中有一点点不同,尝试在此处https://hexdocs.pm/phoenix/Phoenix.Router.html引用文档,但还是没有运气。
答案 0 :(得分:4)
由于您使用的是phoenix-framework,因此默认情况下它将为与Web相关的模块创建单独的YourAppWeb
名称空间。就您而言,我认为这只是一个错字,应该是这样:
alias BlackbookWeb.Router.Helpers, as: Routes
(请注意Web
部分)