Rails chomp方法不起作用

时间:2013-02-20 19:08:11

标签: ruby-on-rails ruby ruby-on-rails-3 rails-activerecord chomp

我的模型方法中有以下代码行。

subjectsinlist='['
subjectlist.subjects.each do |subject|
     subjectsinlist=subjectsinlist+subject.subject_code+', '
end
subjectsinlist.chomp(', ')
subjectsinlist+="]"

要追加的字符串示例如下:

CPE205 CPE206 CPE301 CPE302 HW0210

我期待结果如下:

[CPE205, CPE206, CPE301, CPE302, HW0210]

但相反,我得到了:

[CPE205, CPE206, CPE301, CPE302, HW0210, ]

chomp方法似乎不起作用。 任何关于为什么会发生这种情况的建议都会受到赞赏。

3 个答案:

答案 0 :(得分:3)

chomp返回一个新字符串,请参阅here

但你必须将新字符串分配给变量:

subjectsinlist = subjectsinlist.chomp(', ')

答案 1 :(得分:2)

这可以解决问题:

codes = "[#{subjectlist.subjects.map(&:subject_code).join(', ')}]"

一些解释:

  • map(&:subject_code)将在subject_code

  • 返回的数组的每个元素上调用方法subjectlist.subjects
  • join(', ')会在数组的每个元素(最后一个元素除外)之间放置','(逗号空间)

join方法就是您需要的方法; - )

答案 2 :(得分:1)

subjectsinlist = '[' + subjectlist.subjects.join(', ') + ']'

这应该有效。

chomp不适合你的原因是因为它返回一个新字符串,而不是更改现有字符串:http://apidock.com/ruby/String/chomp