Pau*_*iro 7 elixir phoenix-framework
我正在尝试让我的应用程序干燥和模块化.但是当我尝试将一个组件(小模板)接收到在另一个模板(更大的模块)中调用/"instanciating"时传递的动态值时,我收到了这个错误:
assign @conn not available in eex template. Available assigns: []
Run Code Online (Sandbox Code Playgroud)
我插入模块(大模板)中的组件(小模板)是这样的:
<div class="menuButton main <%= @class %>" id="<%= @id %>">
<div class="menuButton firstChild linesItem"></div>
<div class="menuButton firstChild textItem">MENU</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我使用以下方法将其插入模块中:
<%= render myapp.ComponentView, "menuButton.html", class: nil, id: "menuButtonMenu" %>
Run Code Online (Sandbox Code Playgroud)
我使用以下命令将我的模块插入到页面中:
<%= render myapp.ModuleView, "header.html" %>
Run Code Online (Sandbox Code Playgroud)
什么是使这项工作最好的方法,同时仍然保持小组件/大模块的逻辑干净和干燥?
Chr*_*ord 16
正如AbM所说,你需要明确传递你关心的分配,例如:
<%= render myapp.ModuleView, "header.html", conn: @conn %>
Run Code Online (Sandbox Code Playgroud)
如果你想有条件地支持分配,你可以assigns像这样引用它们:
<%= link "a link", to: "/", class: assigns[:class] || "default" %>
Run Code Online (Sandbox Code Playgroud)