Ruby一行ifelse语句不能与Sinatra命令一起使用?

Amj*_*mja 0 ruby sinatra

当我使用if/elseSinatra命令的缩写语句时,我收到语法错误:

request.cookies['blog'].nil? ? erb :blog : redirect '/done'
Run Code Online (Sandbox Code Playgroud)

返回此错误:

/home/sinatra/ptt/ptt.rb:107: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' request.cookies['blog'].nil? ? "erb :blog" : redirect '/done' ^
Run Code Online (Sandbox Code Playgroud)

这两个语句本身都会产生错误(没有Sinatra代码作为另一个语句).

这是一个Sinatra问题还是语法不正确?

当true/false语句是纯Ruby时,不会发生错误:

request.cookies['blog'].nil? ? foo = 1 : bar = 2
Run Code Online (Sandbox Code Playgroud)

23t*_*tux 5

我认为Ruby无法决定什么是方法调用以及什么属于该if语句.试试这个:

request.cookies['blog'].nil? ? erb(:blog) : redirect('/done')
Run Code Online (Sandbox Code Playgroud)