Phoenix 1.4 如何在插件中使用别名 Routes.page_path
Phoenix 1.4 How to alias Routes.page_path in a Plug
我尝试了几次不同的迭代,但在编译时我一直收到此错误:
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 但仍然没有成功。
由于您使用的是 phoenix-framework,默认情况下它会为与网络相关的模块创建一个单独的 YourAppWeb
命名空间。在你的情况下,我认为这只是一个错字,应该是这样的:
alias BlackbookWeb.Router.Helpers, as: Routes
(注意Web
部分)
我尝试了几次不同的迭代,但在编译时我一直收到此错误:
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 但仍然没有成功。
由于您使用的是 phoenix-framework,默认情况下它会为与网络相关的模块创建一个单独的 YourAppWeb
命名空间。在你的情况下,我认为这只是一个错字,应该是这样的:
alias BlackbookWeb.Router.Helpers, as: Routes
(注意Web
部分)