Ruby on rails 轨道插入动作名称

Ruby on rails 轨道插入动作名称,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有以下代码结构: <% types = [ { one: 'one 1', two: 'two 2', three: 'three 3' } ] %> <% result = types[:#{action_name}]%> <% puts result %> one、two和three是我拥有的动作,我想在result变量中插入这些动作,因此动作的结果将得到types数组中相应的对象。

我有以下代码结构:

<% types = [
    {
        one: 'one 1',
        two: 'two 2',
        three: 'three 3'
    }
] %>
<% result = types[:#{action_name}]%>

<% puts result %>

one
two
three
是我拥有的动作,我想在
result
变量中插入这些动作,因此动作的结果将得到
types
数组中相应的对象。我怎么能做到这一点,我所做的似乎返回了一个错误


:#{action\u name}
它返回一个错误

您的代码在语法上是错误的

修正是:
:“{action\u name}”
。您不需要散列数组,只有散列就足够了

<% types =
    {
        one: 'one 1',
        two: 'two 2',
        three: 'three 3'
    }
%>

如果有哈希数组,则可以访问第一个数组元素:

types.first[:"#{action_name}"]
也可以使用循环来访问散列


如果您只需要hash,那么您应该遵循@Arup Rakshit answer。

您的解决方案存在一些问题

1)
types=[{one:'one1',…}]
不是散列,它是一个包含散列的数组。看起来您需要一个散列,因此应该将其编写为
types={one:“one1”,…}

2) 您希望通过有效地执行
类型[:one]
来访问散列中的元素。要将变量插入到符号中,需要使用引号,即
:“#{var}”
。因此赋值行应该是
result=types[:“{action\u name}”]

3) 似乎您是在模板中执行此操作的,这对于任何类型的变量赋值来说都是一个陌生的地方。我建议您将所有这些代码移到一个控制器中(至少从一开始)



谢谢,这很有效。顺便说一句,数组语法
[]
和您使用的
{}
之间有什么区别?@GEspinha one是数组文字,而
{}
是散列文字。它们之间有什么区别?和