You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Phoenix.Template.UndefinedError:访问/api/todos无法渲染index.json

问题排查与解决

问题原因

代码里的render函数使用了单引号定义模板名称(比如'index.json'),但Phoenix框架匹配模板时期望的是双引号字符串("index.json")。Elixir中,单引号对应字符列表(charlist),双引号对应字符串(string),两者类型不匹配,导致Phoenix无法找到对应的渲染函数。

修复后的代码

修改todo_view.ex中的模板名称,将所有单引号替换为双引号:

defmodule TodoApiWeb.TodoView do
  use TodoApiWeb, :view
  alias TodoApiWeb.TodoView

  def render("index.json", %{todos: todos}) do
    render_many(todos, TodoView, "todo.json")
  end

  def render("todo.json", %{todo: todo}) do
    %{
      id: todo.id
    }
  end
end

额外注意事项

  • 移除了todo.json渲染函数中id: todo.id,末尾的逗号,避免Elixir编译警告(不影响运行,但符合规范写法)。
  • 重启Phoenix服务器,确保代码修改生效。

内容的提问来源于stack exchange,提问作者techmsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:27:18