使用此代码:
Sponsorship.includes(patient: :vaccinations, :backer)
我得到syntax error, unexpected ')', expecting =>
。但是当我像这样更改参数的顺序时:
Sponsorship.includes(:backer, patient: :vaccinations)
错误消失了。为什么语法错误取决于参数的顺序?
答案 0 :(得分:5)
因为如果您依赖Ruby语法糖来避免自己编写{}
,那么哈希参数必须是最后一个参数。
答案 1 :(得分:-1)
这不是有效的ruby语法。你可能意味着:
@sponsorship = Sponsorship.includes(patient: [:vaccinations, :backer]).find_by_slug(params[:id])
请注意,patient:
与:patient =>
相同,后者是哈希的关键版本。因此,ruby期待接下来的事情是哈希值的一半,而不是一系列事情。我把它改成了一个数组(不确定那是不是你的意思)。
答案 2 :(得分:-1)
includes
方法希望找到哈希作为最后一个参数。您必须这样传递哈希。否则,您必须在哈希周围放置{}
。