Techioz Blog

すべての空白をアンダースコアに安全にルビで置き換えるにはどうすればよいですか?

概要

これは空白が含まれる文字列に対して機能します。

str.downcase.tr!(" ", "_")

空白を含まないビット文字列は削除されるだけです

したがって、「New School」は「new_school」に変わりますが、「color」は「」になり、何もありません。

解決策

’をパラメータとしてparameterize(区切り文字: ’-’)に渡します。 Rails 4 以前の場合は、str.parameterize(’’) を使用します。

str = "New School"
str.parameterize(separator: '_')

=> "new_school"
str = "school"
str.parameterize(separator: '_')

=> "school"

アンダースコアを連結してパラメータ化することで、これを解決することもできます。

str = "New School"
str.parameterize.underscore

=> "new_school"
str = "school"
str.parameterize.underscore

=> "school"