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

使用props_template渲染带局部变量的数组时重复输出问题咨询

关于props_template gem渲染数组的问题

我使用props_template gem渲染包含局部视图与额外本地变量的数组,写法如下:

json.array! @orders, partial: ['shared/order', locals: {employee: current_employee}, as: :order] do
end

局部视图代码:

json.iid order.iid

但返回的数组所有元素均为同一个订单的iid,示例:

[{ 'iid' => 1 }, { 'iid' => 1 }, { 'iid' => 1 }]

移除locals后输出正常,各iid不同。我已fork该仓库并添加测试用例,但测试因元素重复而失败。现咨询两个问题:

  1. 我使用locals的方式是否存在错误?
  2. 若不设置as: :order,局部视图中访问数组元素的变量名是什么?

问题1:locals的使用方式存在错误

你当前的写法把locals和as嵌套在了partial的数组参数里,这是错误的。正确格式应该是将partial、locals、as作为独立的配置项传入:

json.array! @orders, partial: 'shared/order', locals: {employee: current_employee}, as: :order do
end

原写法中['shared/order', locals: {...}, as: :order]会被props_template错误识别为局部视图的路径参数,导致迭代时没有正确绑定每个订单实例,最终所有元素复用了同一个值。

问题2:默认变量名

如果不设置as: :order,局部视图中访问数组元素的变量名是局部视图文件名的单数形式。比如你的局部视图是shared/order,对应的变量名就是order;如果局部视图是shared/orders,变量名会自动转为单数order。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:43:15