在Ruby on Rails中,错误消息中的kENSURE和kEND是什么?

nop*_*ole 4 ruby ruby-on-rails

在Ruby on Rails中,我有时会在页面上收到错误:

编译错误
/Users/jian/ror/shov2/app/views/stories/index.html.erb:13:语法错误,意外的kENSURE,期待')'
/Users/jian/ror/shov2/app/views/stories/index.html.erb:15:语法错误,意外的kEND,期待')'

kEND,我可以猜测它是End ...所以它意味着文件结束但意外,应该有')'.

怎么样的kENSURE?

Chu*_*uck 13

kEND常量引用令牌"end",就像你用每个代码块结束的那样.确保块相当于其他语言中的finally块.

begin
  1/0
rescue ZeroDivisionError
  puts "OH SHI-"
ensure # <- THIS THING
  1/1
  puts "Whew, we're safe"
end
Run Code Online (Sandbox Code Playgroud)

这就是kENSURE所指的.

听起来你忘了把闭合的paren放在方法调用或方法参数列表的末尾.