0

我之前发布了一个问题(在同一模型上有效执行多个查询),StackExchange 的其他用户友好地回答并为我节省了大量的处理时间,通过使用该.all函数存储 SQL 查询的结果来避免对我的模型进行大量查询

具体来说,他们建议@chosenrecords = Everything.where('name LIKE ?', 'What I want').order('price ASC').all使用

这似乎非常有效,我在代码中的许多地方都使用了它,但是,刚刚将它上传到实时服务器后,我从 Phusion Passenger 收到一条错误消息,其中包含每个行的.all功能。

错误是syntax error, unexpected '.', expecting kEND .order('price ASC').all

我之前曾尝试从托管我们网站的公司收集有关他们正在使用的铁路和乘客版本的信息,但没有任何成功。过去,只要我使用Ruby 1.9.3 i386-mingw32.

谁能告诉我如何解决这个错误?是否有旧功能可以执行等效操作并且可以在服务器上运行?

4

2 回答 2

0

发现旧版本的Passenger似乎对跨越2行的代码不太健壮,基本上我改变了

@chosenrecords = Everything.where('name LIKE ?', 'What I want')
.order('price ASC').all

到以下,它是一个梦想

@chosenrecords = Everything.where('name LIKE ?', 'What I want').order('price ASC').all

希望其他人能从我的错误中受益!

于 2013-09-15T17:43:48.240 回答
0

实际上,这不是乘客问题,也不是“两行代码不那么健壮”的问题。问题是这样的:

第一个代码展示是非法的 Ruby 语法。如果您像这样将 a 链接到 #order,则必须确保第一行以点结尾。否则 Ruby 会认为第一行是一个完整的语句,而第二行也是一个完整的语句。显然,Ruby 语句不能以点开头,因此在您的第一个代码展示中,第二行引发了语法错误。

于 2013-09-16T11:10:10.200 回答