配置Phoenix LiveView后出现:variable_name not found in错误求助
解决Phoenix LiveView中"key :variable_name not found in"错误
你遇到的错误核心原因是mount函数的参数签名不符合LiveView要求,导致变量赋值逻辑根本没执行。
Phoenix LiveView的mount函数必须接收三个参数:请求参数(params)、会话(session)、socket对象。你的代码里只定义了两个参数(_session, socket),框架会找不到正确的mount函数去执行,自然不会把:variable_name赋值到socket中,模板渲染时就会找不到这个变量。
修改后的代码如下:
defmodule CounterWeb.CounterLive do use Phoenix.LiveView def mount(_params, _session, socket) do blabla = 0 socket = assign(socket, :variable_name, blabla) {:ok, socket} end def render(assigns) do ~L""" <h1>Count: <%= @variable_name %></h1> <button>+</button> <button>-</button> """ end end
额外检查点:
- 确认路由配置正确,在
router.ex中使用live "/counter", CounterLive来挂载LiveView,而非普通的get路由 - 确保页面是通过LiveView入口加载,没有用普通控制器渲染该模板
内容的提问来源于stack exchange,提问作者Ruan Nawe
相关产品推荐
相关产品推荐

