Ruby三元运算符和方法调用

我正在使用ruby 2.1.5,面对三元运算符的一些问题

语法错误

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

工作的

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

有人可以解释一下它的工作原理以及为什么不能正常工作? 提前致谢

当您使用简写语法(没有括号)时,ruby会期望直到行尾的所有内容都成为您方法的参数。 因此,您的“语法错误”示例被理解为:

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

这显然是错的。