Ruby on rails Rails chomp方法不起作用
在我的模型方法中有以下代码行Ruby on rails Rails chomp方法不起作用,ruby-on-rails,ruby,ruby-on-rails-3,rails-activerecord,chomp,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 因此,我期望结果是: [CPE
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
方法似乎不起作用。
任何关于发生这种情况的原因的建议都将不胜感激。
subjectsinlist='['+subjectlist.subjects.join(',')+']'
这应该行得通
chomp不适用于您的原因是它返回一个新字符串,而不是更改现有字符串:
subjectsinlist='['+subjectlist.subjects.join(',')+']'
这应该行得通
chomp不适用于您的原因是它返回一个新字符串,而不是更改现有字符串:chomp返回一个新字符串,请参阅 但您必须将新字符串分配给变量:
subjectsinlist = subjectsinlist.chomp(', ')
chomp返回一个新字符串,请参阅 但您必须将新字符串分配给变量:
subjectsinlist = subjectsinlist.chomp(', ')
这可以做到:
codes = "[#{subjectlist.subjects.map(&:subject_code).join(', ')}]"
一些解释:
将对map(&:subject\u code)
subjectlist.subjects返回的数组的每个元素调用方法
subject\u code
将在数组的每个元素(最后一个除外)之间放置“,”(coma空格)连接(“,”)
join
方法;-) 这可以做到:
codes = "[#{subjectlist.subjects.map(&:subject_code).join(', ')}]"
一些解释:
将对map(&:subject\u code)
subjectlist.subjects返回的数组的每个元素调用方法
subject\u code
将在数组的每个元素(最后一个除外)之间放置“,”(coma空格)连接(“,”)
这里需要的是
join
方法;-) 我只是试了一下,这在保持整洁的同时效果很好,但我不得不马上接受这个答案,因为他回答了我具体的要求。无论如何,谢谢。使用chomp
有点错误,因为我们不想迭代数组中的每个x元素。我们只想迭代x-1元素(除最后一个之外的所有元素)。这就是为什么join
完全适合这里。谢谢。我也在用这个,你的解释很清楚。作为ruby的新手,我只是想尽一切办法让它工作。所以我真的很感谢你给我介绍一种新的方法。只是尝试了一下,这在保持整洁的同时效果很好,但我不得不接受chomp的回答,因为他回答了我具体的要求。无论如何,谢谢。使用chomp
有点错误,因为我们不想迭代数组中的每个x元素。我们只想迭代x-1元素(除最后一个之外的所有元素)。这就是为什么join
完全适合这里。谢谢。我也在用这个,你的解释很清楚。作为ruby的新手,我只是想尽一切办法让它工作。因此,我非常感谢您向我介绍一种新方法。谢谢,我不知道为什么它不起作用,因为我在控制台中做了完全相同的事情,并收到了正确的输出。因为在您的模型中,您忘了将subjectsinlist.chomp(',')分配给变量。如果您这样做,那么从chomp()返回的新字符串将在控制台中使用subjectsinlist分配给subjectsinlist:),chomp(',')将为您提供正确的输出,但它只呈现该输出。我现在就知道了。谢谢你的帮助。你也可以用它!方法以就地修改字符串并避免重新分配变量。示例:subjectsinlist.chomp!(',')谢谢,我不知道为什么它不起作用,因为我在控制台中做了完全相同的事情并收到了正确的输出。因为在您的模型中,您忘记了将subjectsinlist.chomp(',')分配给变量。如果您这样做,那么从chomp()返回的新字符串将在控制台中使用subjectsinlist分配给subjectsinlist:),chomp(',')将为您提供正确的输出,但它只呈现该输出。我现在就知道了。谢谢你的帮助。你也可以用它!方法以就地修改字符串并避免重新分配变量。示例:subjectsinlist.chomp!(“,”)尝试了这个方法,但我想要列表的一个特定属性。这是一种更干净的表达方式,谢谢<代码>主题列表。主题将返回您试图加入的主题对象。(在编辑之前先咀嚼),但我们需要每个主题的subject\u code
属性…是的,在最初的代码中,由于格式不好,所以没有立即清除:您的解决方案是正确的。尝试了这个方法,但我想要列表的特定属性。这是一种更干净的表达方式,谢谢<代码>主题列表。主题将返回您试图加入的主题对象。(在编辑之前先咀嚼一下),但是我们需要每个主题的subject\u code
属性……是的,在最初的代码中,由于格式不好,所以没有立即清除:您的解决方案是正确的。