栏杆是否与弦乐的“人性化”相反?

Rails为string添加了一个humanize()方法,其工作方式如下(来自Rails RDoc):

 "employee_salary".humanize # => "Employee salary" "author_id".humanize # => "Author" 

我想走另一条路 我有一个“漂亮”的input,我想“非人性化”写入模型的属性:

 "Employee salary" # => employee_salary "Some Title: Sub-title" # => some_title_sub_title 

铁轨是否包含这方面的帮助?

更新

在此期间,我将以下内容添加到app / controllers / application_controller.rb:

 class String def dehumanize self.downcase.squish.gsub( /\s/, '_' ) end end 

有没有更好的地方呢?

谢谢, fd , 链接 。 我已经实施了推荐的解决scheme。 在我的config / initializers / infections.rb中,我在结尾添加了以下内容:

 module ActiveSupport::Inflector # does the opposite of humanize ... mostly. # Basically does a space-substituting .underscore def dehumanize(the_string) result = the_string.to_s.dup result.downcase.gsub(/ +/,'_') end end class String def dehumanize ActiveSupport::Inflector.dehumanize(self) end end 

string.parameterize.underscore会给你相同的结果

 "Employee salary".parameterize.underscore # => employee_salary "Some Title: Sub-title".parameterize.underscore # => some_title_sub_title 

或者你也可以使用哪个更简洁(谢谢@danielricecodes)。

 "Employee salary".parameterize("_") # => employee_salary 

Rail API中似乎没有任何这样的方法。 但是,我发现这个博客文章提供了一个(部分)解决scheme: http : //rubyglasses.blogspot.com/2009/04/dehumanizing-rails.html

http://as.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html中; ,有一些方法可用来对string进行优化和取消优化。