我有一個基本應用程序的佈局:如何渲染父級內部的子佈局?
#layouts/base.html.eex
<body>
<div id="base_layout.html">
<!-- some content -->
<%= render(@view_module, @view_template, assigns) %>
<!-- some content -->
</div>
</body>
我有其他20個不同的佈局。我想從base.html.eex
繼承它們全部。我怎樣才能做到這一點?我已經試過這樣:
#layouts/child_layout5.html.eex
<div id="child_layout5.html">
<!-- some content -->
<%= render(@view_module, @view_template, Map.put(assigns, :layout, {MyApp.LayoutView, "base.html"})) %>
</div>
但這恰恰使該基地佈局裹成<div id="child_layout5.html">
。
雖然我希望它是反之亦然:渲染child_layoutXX.html.eex
的base.html
裏面的內容,從child_layoutXX.html.eex
注意base.html
不知道其孩子child_layoutXX.html.eex
的,有多少是,如果有的話,是什麼他們的名字是,也就是base.html
不能通過它的名字明確地呈現其任何子女。
功能https://hexdocs.pm/phoenix/Phoenix.View.html#render/3到目前爲止還沒有幫助我。
好的,但如何使參數'@ child_layout'不是強制性的?也就是說,base.html僅在傳遞參數「@ child_layout」時呈現子佈局。 – Johshi
好的。有沒有其他辦法可以做到這一點? – Johshi
「其他方式」是什麼意思? – Dogbert