Ruby on Rails: я хочу удалить не буквы, чтобы создать имя пользователя - PullRequest
3 голосов
/ 15 июля 2010

Допустим, у меня есть имя "Master Yoda"

Как мне автоматически преобразовать его в строчные и заменить пробелы подчеркиванием ... или просто избавиться от пробелов.

, поэтому, возможно, превратите его в master_yoda или masteryoda

Я ищу наиболее краткое из возможных решений.

Ответы [ 2 ]

1 голос
/ 15 июля 2010
'Master Yoda'.underscore # => 'master yoda'
'MasterYoda'.underscore # => 'master_yoda'
'Master Yoda'gsub(' ', '') # => 'MasterYoda'
'Master Yoda'.gsub(' ', '').downcase # => 'masteryoda'
0 голосов
/ 15 июля 2010

Метод для этого: underscore из модуля Rails ActiveSupport::CoreExtensions::String::Inflections.

В качестве дополнительного примечания, если какой-либо собственный метод Rails не выполняет то, что вам нужно, обязательно нажмите ссылку «Показать исходный код» на api.rubyonrails.org. В этом случае показ источника Inflections.underscore говорит нам, что он на самом деле просто вызывает Inflector.underscore для объекта строки вызывающей стороны.

Ища эту документацию, мы можем найти метод, который действительно работает (так сказать) здесь: http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#M000710

Я знаю, что вы хотите самый краткий ответ, но просто знайте, что относительно просто (и полезно также узнать), как все работает "под капотом".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...