【发布时间】:2016-10-13 19:36:35
【问题描述】:
我正在使用 Rails 4.2.7,并且有以下内容可以修剪特定表达式中的所有空白……
puts "division: #{division}$$"
division = division.gsub(/\A\p{Space}+|\p{Space}+\z/, '')
当我运行它时,最终我的程序会因为这个输出而死掉……
division: 18-29$$
Error during processing: undefined method `gsub' for nil:NilClass
/Users/mikeb/Documents/workspace/runtrax/app/models/race_time.rb:27:in `block in <class:RaceTime>'
/Users/mikeb/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:448:in `instance_exec'
/Users/mikeb/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:448:in `block in make_lambda'
/Users/mikeb/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:228:in `block in halting_and_conditional'
/Users/mikeb/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:506:in `block in call'
/Users/mikeb/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:506:in `each'
/Users/mikeb/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:506:in `call'
/Users/mikeb/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.7.1/lib/active_support/callbacks.rb:92:in `__run_callbacks__'
…
我不明白为什么 gsub 认为它在上面的行中得到 nil 时,字符串显然不是空的(打印出 18-29 的值)。奇怪的是,我无法在 Rails 控制台中重现这一点,所以我想知道这是发生了什么其他事情,或者是否有更好的方法来编写上述内容。
【问题讨论】:
-
如果
division #=> "18-29",我无法重现错误。 -
binding.pry或byebug而不是puts并检查值。 -
这是真正的代码还是你在这两行之间遗漏了什么?
-
我认为这不是您的代码,您使用回调的方式有些问题
标签: ruby-on-rails ruby null gsub