Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails chomp方法不起作用_Ruby On Rails_Ruby_Ruby On Rails 3_Rails Activerecord_Chomp - Fatal编程技术网

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
属性……是的,在最初的代码中,由于格式不好,所以没有立即清除:您的解决方案是正确的。