gpt4 book ai didi

elixir - 编程 Phoenix : undefined function page_path/2

转载 作者:行者123 更新时间:2023-12-04 16:42:36 25 4
gpt4 key购买 nike

我的 Web 应用程序出现问题,编译错误如下:

== Compilation error on file web/controllers/auth.ex ==
** (CompileError) web/controllers/auth.ex:49: undefined function page_path/2
(stdlib) lists.erl:1338: :lists.foreach/2
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
(elixir) lib/kernel/parallel_compiler.ex:117: anonymous fn/4 in Kernel.ParallelCompiler.spawn_compilers/1

我知道大多数问题都与 router.ex 上缺少路线有关。 ,但看起来这里没有任何问题:
  scope "/", Rumbl do
pipe_through :browser # Use the default browser stack

get "/", PageController, :index
get "/users/:id", UserController, :show
resources "/users", UserController, only: [:index, :show, :new, :create]
resources "/sessions", SessionController, only: [:new, :create, :delete]
resources "/videos", VideoController

end

scope "/manage", Rumbl do
pipe_through [:browser, :authenticate_user]

resources "/videos", VideoController
end

我的 web.ex 看起来像这样:
def router do
quote do
use Phoenix.Router
import Rumbl.Auth, only: [authenticate_user: 2] # New import
end
end

def controller do
quote do
use Phoenix.Controller

alias Rumbl.Repo
import Ecto
import Ecto.Query, only: [from: 1, from: 2]

import Rumbl.Router.Helpers
import Rumbl.Gettext
import Rumbl.Auth, only: [authenticate_user: 2] # New import

end
end

auth.ex 看起来像这样
defmodule Rumbl.Auth do
import Plug.Conn
import Comeonin.Bcrypt, only: [checkpw: 2, dummy_checkpw: 0]
import Phoenix.Controller
alias Rumbl.Router.Helpers

def init(opts) do
Keyword.fetch!(opts, :repo)
end

def call(conn, repo) do
user_id = get_session(conn, :user_id)
user = user_id && repo.get(Rumbl.User, user_id)
assign(conn, :current_user, user)
end

def login_by_username_and_pass(conn, username, given_pass, opts) do
repo = Keyword.fetch!(opts, :repo)
user = repo.get_by(Rumbl.User, username: username)

cond do
user && checkpw(given_pass, user.password_hash) ->
{:ok, login(conn, user)}
user ->
{:error, :unauthorized, conn}
true ->
dummy_checkpw()
{:error, :not_found, conn}
end
end

def login(conn, user) do
conn
|> assign(:current_user, user)
|> put_session(:user_id, user.id)
|> configure_session(renew: true)
end

def logout(conn) do
configure_session(conn, drop: true)
end

def authenticate_user(conn, _opts) do
if conn.assigns.current_user do
conn
else
conn
|> put_flash(:error, "You must be logged in to access that page")
|> redirect(to: page_path(conn, :index))
|> halt()
end
end
end

最佳答案

你可以发布 auth.ex 文件吗?第 49 行似乎有问题。
解决方案:
请更改此行:

|> redirect(to: page_path(conn, :index))
|> redirect(to: Helpers.page_path(conn, :index))

关于elixir - 编程 Phoenix : undefined function page_path/2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40449151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com