gpt4 book ai didi

elixir - 使用 conn on view 渲染 url

转载 作者:行者123 更新时间:2023-12-01 13:23:43 25 4
gpt4 key购买 nike

我正在使用 Phoenix 1.3.0-rc我想使用 user_path(...) 在我的 json 返回中打印一个 url .

我的 Controller :

...
def show(conn, %{"id" => id}) do
user = User.find(id)
render(conn, "show.json", user: user)
end
...

我的观点:
...
def render("show.json", %{user: user}) do
%{
data: render_one(user, __MODULE__, "user.json"),
links: render_one(user, __MODULE__, "links.json")
}
end
...
def render("links.json", %{user: user}) do
%{
self: "/api/v1/users/#{user.id}"
}
end
...

我想写这个:
self: user_path(conn, :show, user.id)

但我收到此错误: undefined function conn/0

最佳答案

您必须通过 conn 才能看到 View 。请注意 Phoenix.Controller.render/3Phoenix.View.render/3 不一样. “前者预计
连接并依赖于内容协商,而后者是
与连接无关,通常从您的 View 中调用".1
在您的 Controller 中:

def show(conn, %{"id" => id}) do
user = User.find(id)
render(conn, "show.json", user: user, conn: conn)
end

而你的观点:
def render("show.json", %{user: user, conn: conn}) do
%{
data: render_one(user, __MODULE__, "user.json"),
links: render_one(user, __MODULE__, "links.json", conn: conn)
}
end
...
def render("links.json", %{user: user, conn: conn}) do
%{
self: user_path(conn, :show, user.id)
}
end
  • https://github.com/phoenixframework/phoenix/blob/master/lib/phoenix/controller.ex#L156
  • 关于elixir - 使用 conn on view 渲染 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44639875/

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