Ruby on Rails:我想删除非字母以创建用户名

时间:2010-07-15 15:11:01

标签: ruby-on-rails

假设我的名字为"Master Yoda"

我如何自动将其转换为小写,并用下划线替换空格......或者只是去除空格。

所以也许把它变成master_yodamasteryoda

我正在寻找最简洁的解决方案。

2 个答案:

答案 0 :(得分:1)

'Master Yoda'.underscore # => 'master yoda'
'MasterYoda'.underscore # => 'master_yoda'
'Master Yoda'gsub(' ', '') # => 'MasterYoda'
'Master Yoda'.gsub(' ', '').downcase # => 'masteryoda'

答案 1 :(得分:0)

执行此操作的方法是来自Rails'underscore模块的ActiveSupport::CoreExtensions::String::Inflections

作为补充说明,如果任何本机Rails方法没有完全符合您的要求,请务必单击api.rubyonrails.org上的“显示源”链接。在这种情况下,显示Inflections.underscore的来源告诉我们它实际上只是在调用者字符串对象上调用Inflector.underscore

在搜索该文档时,我们可以在此找到真正完成工作的方法(可以这么说):http://api.rubyonrails.org/classes/ActiveSupport/Inflector.html#M000710

我知道你想要最简洁的答案,但只要知道它是如何“在幕后工作”相对简单(并且也有益于学习)。