单行 if-else 语句期望 keyword_do

Single-line if-else statement expecting keyword_do

长期以来我一直在使用单行if-else语句,最近我反复出现这个错误:

registrations_controller.rb:88: syntax error, unexpected tSYMBEG, expecting keyword_do or '{' or '('

这是我在当前示例中使用的语法,我已经双重、三次和四次检查语法是否正确:

resource.errors.any? ? render :new : do_something_else!

我检查了四周,似乎找不到任何更改或类似问题。奇怪的是,当我 运行

foo = [1,2,3]
foo.any? ? 'bar' : 'baz'

在我的终端中,我没有收到任何错误。我很确定我已经在这里复制了我在所有相关方面尝试做的事情,但似乎无法找到关于为什么会发生这种情况的提示。我想 render 可能有问题,但我不认为是这种情况,因为我在尝试将 render 'new' 与字符串而不是符号一起使用时遇到了类似的错误。

您需要将 render 参数括在括号中。

resource.errors.any? ? render(:new) : do_something_else!

否则,解析器将难以理解参数从哪里开始。