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是数组文字,而{}
是散列文字。它们之间有什么区别?和