下划线的NoMethodError

时间:2010-04-21 08:36:39

标签: ruby-on-rails ruby

我想转换字符串

"Full Time"

"full_time"

当我在irb中使用“全时”.underscore时,会提示错误

NoMethodError: undefined method `underscore' for "Full Time":String

我该如何解决?或者,有没有其他方法可以获得上述强调结果?

2 个答案:

答案 0 :(得分:5)

有一个名为下划线的rails helper方法。如果您启动rails控制台(脚本/控制台),您将能够使用它:

"FullTime".gsub(/\s+/,'').underscore.to_sym
:full_time 

所以我认为你应该做的是,删除空格,然后应用上述方法。请注意,我添加了to_sym只是为了表明它是可行的,但是如果你不需要它,只需删除它。

请注意,它是一个rails助手,而不是String类中的ruby方法。它只适用于rails enviornment

答案 1 :(得分:1)

您可以使用gsub并将所有空格替换为下划线

irb(main):008:0> "Full Time".downcase.gsub(/\s+/,"_")
=> "full_time"