9

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

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

4 回答 4

19

最简单的方法可能是:

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

collect(&:movie_title)与 相同collect { |asset| asset.movie_title },它返回一个电影标题数组。join(':')使用 Array 中的值创建一个字符串,以 . 分隔:

于 2013-01-25T11:51:50.783 回答
11

试试这个

assets = Asset.where({ :current_status => ["active"] }).all
string = ""
if assets.present?
 assets.each do |a|
  string = string + ":"+ a.movie_title 
 end
end
于 2013-01-25T11:51:44.020 回答
10

为什么不只是这样:

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

如果他们是 nil 你会得到" : "

于 2013-10-25T15:43:04.663 回答
3

方法join( docs ) 和map( docs ) 可能会对您有所帮助。

尝试以下操作:

assets = Asset.where(current_status: ["active"]).all
assets.map(&:movie_title).join(':')
于 2013-01-25T11:57:58.307 回答