RoR:连接两个变量并传递参数?

时间:2013-04-14 19:01:28

标签: ruby-on-rails ruby-on-rails-3 concatenation

如何在Ruby on Rails中连接变量?

说我有这个:

        tags.each do |tag, index|
            @tag_index = client.tag_recent_media(tag)
        end

我不确定如何将tagindex放在一起?我是否有必要将参数tag传递给tag_recent_media

由于

修改

我应用了以下答案:

    @tag.concat(index.to_s) = client.tag_recent_media(tag)

我收到语法错误

syntax error, unexpected '=', expecting keyword_end
                @tag.concat(index.to_s) = client.tag_recent_media(tag)

我正在尝试做的是我正在迭代tags并且我正在尝试将标记的index位置应用到tag值,然后使用该值作为变量。

所以如果它迭代的第一个值定位为0并且值为“apple”那么我想要变量

@apple_0 = client.tag_recent_media()

此外,tag_recent_media()应该是我正在使用的API的实例方法。 documentation表示它应该传递一个字符串。

2 个答案:

答案 0 :(得分:0)

字符串的连接可以使用concat方法完成:

例如:

在您的情况下,我假设您tag类型为stringindex类型为integer类型。所以你可以这样做:

 a="tag"; b=1
 a.concat(b.to_s)  #=> "tag1"

您未明确指出tag_recent_media正在做什么。如果您提供有关所调用方法的更多信息,将很容易为您提供正确答案。

答案 1 :(得分:0)

  

我正在尝试做的是我正在迭代标记,我正在尝试将标记的索引位置应用到标记值,然后将其用作变量。

     

所以如果它迭代的第一个值定位为0并且值为“apple”那么我想要变量

@apple_0 = client.tag_recent_media()

这将需要元编程和定义动态方法,在这种情况下它是非常糟糕的方法。为什么阵列不够你呢?

@new_tags = []
tags.each do |tag, index|
  @new_tags[index] = client.tag_recent_media(tag)
end

甚至更好

@new_tags = []
tags.each_with_index.map {|tag, i| @new_tags[i] = client.tag_recent_media(tag) }

然后你可以遍历@new_tag数组。