Рубиновый троичный оператор и вызов метода

Я использую ruby ​​2.1.5, столкнувшись с некоторой проблемой с троичным оператором

Ошибка синтаксиса

request.xhr?  ? render :json => "success"  : redirect_to index_url

за работой

request.xhr?  ? render(:json => "success") : redirect_to(index_url)

Может кто-нибудь объяснить, как это работает и почему выше одного не работает? заранее спасибо

1 ответ

Решение

Когда вы используете сокращенный синтаксис (без скобок), ruby ​​ожидает, что все до конца строки будет параметрами вашего метода. Таким образом, ваш пример "ошибки синтаксиса" понимается как:

request.xhr?  ? render(:json => "success"  : redirect_to index_url)

что явно не так.

Другие вопросы по тегам