Rails插入action_name

时间:2015-08-28 11:02:51

标签: ruby-on-rails ruby

我有以下代码结构:

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

<% puts result %>

onetwothree是我的动作,我想在result变量中进行插值,因此动作的结果会得到相应的types数组中的对象。我怎么能这样做,我所做的似乎返回错误。

:#{action_name}它会返回错误

3 个答案:

答案 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)看起来你在模板中这样做,这是任何类型的变量赋值的一个奇怪的地方。我建议你将所有这些代码移到一个控制器中(至少开始)。