如何在模板中的渲染函数内连接@something
How to concatenate @something inside a render function in a template
我的模板中有这个功能:
<%= 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:
到现在我都做不好...
如果你需要这样的东西,恐怕你做错了什么。也许有更简单的解决方案...
无论如何:由于 Phoenix 的某些版本(抱歉我不知道确切的版本,也许是 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/)。但这有点黑魔法而且可能是错误的方法。
我的模板中有这个功能:
<%= 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:
到现在我都做不好...
如果你需要这样的东西,恐怕你做错了什么。也许有更简单的解决方案...
无论如何:由于 Phoenix 的某些版本(抱歉我不知道确切的版本,也许是 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/)。但这有点黑魔法而且可能是错误的方法。