具有特定参数顺序的语法错误

时间:2015-08-24 14:08:46

标签: ruby hash syntax literals

使用此代码:

Sponsorship.includes(patient: :vaccinations, :backer)

我得到syntax error, unexpected ')', expecting =>。但是当我像这样更改参数的顺序时:

Sponsorship.includes(:backer, patient: :vaccinations)

错误消失了。为什么语法错误取决于参数的顺序?

3 个答案:

答案 0 :(得分:5)

因为如果您依赖Ruby语法糖来避免自己编写{},那么哈希参数必须是最后一个参数。

答案 1 :(得分:-1)

这不是有效的ruby语法。你可能意味着:

@sponsorship = Sponsorship.includes(patient: [:vaccinations, :backer]).find_by_slug(params[:id])

请注意,patient::patient =>相同,后者是哈希的关键版本。因此,ruby期待接下来的事情是哈希值的一半,而不是一系列事情。我把它改成了一个数组(不确定那是不是你的意思)。

答案 2 :(得分:-1)

includes方法希望找到哈希作为最后一个参数。您必须这样传递哈希。否则,您必须在哈希周围放置{}