2014-01-02 3 views
0

Когда я использую сокращенную if/else заявление с командами Sinatra, я получаю ошибку синтаксиса:Ruby одна строка ifelse заявление не работает с командами Sinatra?

request.cookies['blog'].nil? ? erb :blog : redirect '/done' 

возвращает эту ошибку:

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

Оба заявления производят ошибки, когда сами по себе (без Синатра кода как другое заявление).

Является ли это проблемой Sinatra или является синтаксической ошибкой?

ошибка не возникает, когда истинные/ложные утверждения просты Ruby:

request.cookies['blog'].nil? ? foo = 1 : bar = 2 
+0

В чем вопрос? – sawa

ответ

5

Я думаю, что Руби не может решить, что это вызов метода и то, что принадлежит к if заявления. Попробуйте следующее:

request.cookies['blog'].nil? ? erb(:blog) : redirect('/done') 
Смежные вопросы