Phoenix 1.4如何在插件中为Routes.page_path加上别名

时间:2018-11-28 06:28:33

标签: elixir phoenix-framework 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引用文档,但还是没有运气。

1 个答案:

答案 0 :(得分:4)

由于您使用的是,因此默认情况下它将为与Web相关的模块创建单独的YourAppWeb名称空间。就您而言,我认为这只是一个错字,应该是这样:

alias BlackbookWeb.Router.Helpers, as: Routes

(请注意Web部分)