Phoenix:在模板内赋值的呈现模板 [英] Phoenix: render template that has assigns values inside a template

查看:13
本文介绍了Phoenix:在模板内赋值的呈现模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使我的应用程序干爽而模块化。但是,当我尝试将一个接收调用/"实例化"它时传递的动态值的组件(小模板)放入另一个模板(较大的模块)中时,我得到了这个错误:

assign @conn not available in eex template. Available assigns: []

我在模块(大模板)中插入的组件(小模板)如下:

<div class="menuButton main <%= @class %>" id="<%= @id %>">
    <div class="menuButton firstChild linesItem"></div>
    <div class="menuButton firstChild textItem">MENU</div>
</div>

我使用

将其插入到我的模块中:

<%= render myapp.ComponentView, "menuButton.html", class: nil, id: "menuButtonMenu" %>

并且我使用

将我的模块插入到我的页面中:

<%= render myapp.ModuleView, "header.html" %>

在保持小组件/大模块的逻辑干净和干燥的同时,使其工作的最佳方式是什么?

推荐答案

正如abm所说,您需要显式传递您关心的赋值,例如:

<%= render myapp.ModuleView, "header.html", conn: @conn %>

如果您想要有条件地支持赋值,可以在assigns中引用它们,如下所示:

<%= link "a link", to: "/", class: assigns[:class] || "default" %>

这篇关于Phoenix:在模板内赋值的呈现模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆