すべての空白をアンダースコアに安全にルビで置き換えるにはどうすればよいですか?
概要
これは空白が含まれる文字列に対して機能します。
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"