我有以下代码结构:
<% types = [
{
one: 'one 1',
two: 'two 2',
three: 'three 3'
}
] %>
<% result = types[:#{action_name}]%>
<% puts result %>
one
,two
和three
是我的动作,我想在result
变量中进行插值,因此动作的结果会得到相应的types
数组中的对象。我怎么能这样做,我所做的似乎返回错误。
:#{action_name}
它会返回错误
答案 0 :(得分:3)
你的代码在语法上是错误的。
修复是::"#{action_name}"
。而且你不需要一个哈希数组,只有哈希就足够了。
<% types =
{
one: 'one 1',
two: 'two 2',
three: 'three 3'
}
%>
答案 1 :(得分:0)
如果你有哈希数组,那么你可以访问第一个数组元素:
types.first[:"#{action_name}"]
或者您可以使用循环来访问哈希。
如果您只需要哈希,那么您应该关注@Arup Rakshit回答。
答案 2 :(得分:0)
您的解决方案存在一些问题。
1)types = [{ one: "one1", ... }]
不是哈希,它是一个带有哈希的数组。看起来你想要一个哈希,所以应该写成types = { one: "one1", ... }
2)您希望通过有效地执行types[:one]
来从哈希中访问元素。要将变量插入到符号中,您需要使用引号,即:"#{var}"
。因此,分配行应为result = types[:"#{action_name}"]
3)看起来你在模板中这样做,这是任何类型的变量赋值的一个奇怪的地方。我建议你将所有这些代码移到一个控制器中(至少开始)。