Ruby On Rails:循环中的Concatenate String

时间:2013-01-25 11:49:17

标签: ruby-on-rails loops string-concatenation

我是RoR的新手。我试图找到一种方法,通过谷歌搜索来连接控制器循环中的字符串。

assets = Asset.where({ :current_status => ["active"] }).all
assets.each do |a|
      string = string + ":"+ a.movie_title 
end

我想将属性“movie_title”连接成一个冒号分隔的字符串。

但我收到错误

undefined method `+' for nil:NilClass

4 个答案:

答案 0 :(得分:17)

最简单的方法可能是:

string = assets.collect(&:movie_title).join(':')

collect(&:movie_title)collect { |asset| asset.movie_title }相同,后者返回电影标题数组。 join(':')创建一个String,其中Array中的值由:分隔。

答案 1 :(得分:9)

试试这个

assets = Asset.where({ :current_status => ["active"] }).all
string = ""
if assets.present?
 assets.each do |a|
  string = string + ":"+ a.movie_title 
 end
end

答案 2 :(得分:8)

为什么不呢:

"#{string} : #{a.movie_title}"

如果它们为零,您将获得" : "

答案 3 :(得分:3)

方法joindocs)和mapdocs)可以为您提供帮助。

请尝试以下操作:

assets = Asset.where(current_status: ["active"]).all
assets.map(&:movie_title).join(':')