我的模板中有这个功能:
<%= for {element, id} <- Enum.with_index(MyProject.PageView.Recursion.buildElements(@header_linkNumber),1) do %>
<%= render FabricaASA.ComponentView, @header_linkType,
button_id: "#{id}",
button_mainStyle: @header_mainStyle
%>
<% end %>
现在我想在我的右侧@header_mainStyle + id
连接,以便从其他模板中,对于每个创建的元素,我可以传递:header_mainStyle1, header_mainStyle2,...header_mainStyleN
此外,在左侧,我有button_mainStyle:
我希望连接@header_linkType + _mainStyle:
,以便我可以动态地将其更改为link_mainStyle:
或button_mainStyle:
到目前为止,我无法正确地做到这一点......
答案 0 :(得分:0)
无论如何:因为某些版本的凤凰城(我很抱歉,我不知道哪一个正好,也许是1.0?),@变量存储在@ conn.assigns地图中你可以通过以下方式访问它们在那里命名。在旧版本中,这些变量是宏,这种魔法不起作用。
所以你可以尝试把它放到控制器中:
def index(conn, _params) do
render conn, "index.html", [var1: "var1"]
end
并进入页面模板:
<p>var1: <%= @var1 %></p>
<p>assigns:</p>
<%= for i <- 1..10 do %>
<p>var<%= i %>:<p>
<pre><%=
varname = "var#{i}" |> String.to_atom
inspect(@conn.assigns[varname]) %>
</pre>
<% end %>
...你会看到var1到var10的绑定(截图:http://postimg.org/image/4b4790cjz/)。但它有点黑魔法,可能是错误的方法。