0

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

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方法似乎不起作用。任何关于为什么会发生的建议将不胜感激。

4

3 回答 3

3

chomp 返回一个新字符串,请参见此处

但是您必须将新字符串分配给一个变量:

subjectsinlist = subjectsinlist.chomp(', ')
于 2013-02-20T19:12:53.057 回答
2

这可以解决问题:

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

一些解释:

  • 将在返回的数组的每个元素上map(&:subject_code)调用该方法subject_codesubjectlist.subjects

  • 将在数组的每个元素之间join(', ')放置 ', '(逗号空格)(最后一个元素除外)。

join方法是您在这里需要的;-)

于 2013-02-20T19:13:23.967 回答
1

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

那应该行得通。

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

于 2013-02-20T19:10:05.083 回答