在 ruby erb 变量中使用变量
Using variables in ruby erb variables
我有一个包含很多这些的 erb 文件,我正在尝试为它们创建一个循环:
<% if @addhostgroup -%>
<% @addhostgroup.each do |k, v| %>
<%= k %> <%= v %>
<% end %>
<% end %>
<% if @addservicegroup -%>
<% @addservicegroup.each do |k, v| %>
<%= k %> <%= v %>
<% end %>
<% end %>
我想做的是这样的:
<% %w(addhostgroup addservicegroup).each do |action| %>
<% if @action -%>
<% @action.each do |k, v| %>
<%= k %> <%= v %>
<% end %>
<% end %>
<% end %>
有人能告诉我如何在 erb 变量名上使用变量吗?
我一直在寻找一种方法,但没有成功。
非常感谢!
编辑:一种更简单的方法是制作一个普通数组而不是百分比文字。 [@addhostgroup, @addservicegroup].each do |action|
。有时我会忽略一些小事:)
您可以将 instance_variable_get 与数组一起使用,并迭代到您已设置的 action
中。
在每个块中立即添加一行:
<% instance_var_value = instance_variable_get(:"@#{action}") %>
您还可以在遍历数组之前将值映射到数组中。
问题是块变量 action
包含一个带有动作名称的字符串。您想根据名称使用动态名称调用 @variable
。您正在搜索这段代码:
instance_variable_get("@#{action}")
我有一个包含很多这些的 erb 文件,我正在尝试为它们创建一个循环:
<% if @addhostgroup -%>
<% @addhostgroup.each do |k, v| %>
<%= k %> <%= v %>
<% end %>
<% end %>
<% if @addservicegroup -%>
<% @addservicegroup.each do |k, v| %>
<%= k %> <%= v %>
<% end %>
<% end %>
我想做的是这样的:
<% %w(addhostgroup addservicegroup).each do |action| %>
<% if @action -%>
<% @action.each do |k, v| %>
<%= k %> <%= v %>
<% end %>
<% end %>
<% end %>
有人能告诉我如何在 erb 变量名上使用变量吗?
我一直在寻找一种方法,但没有成功。
非常感谢!
编辑:一种更简单的方法是制作一个普通数组而不是百分比文字。 [@addhostgroup, @addservicegroup].each do |action|
。有时我会忽略一些小事:)
您可以将 instance_variable_get 与数组一起使用,并迭代到您已设置的 action
中。
在每个块中立即添加一行:
<% instance_var_value = instance_variable_get(:"@#{action}") %>
您还可以在遍历数组之前将值映射到数组中。
问题是块变量 action
包含一个带有动作名称的字符串。您想根据名称使用动态名称调用 @variable
。您正在搜索这段代码:
instance_variable_get("@#{action}")