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 に答える