Ruby 具有特定参数顺序的语法错误
使用此代码:Ruby 具有特定参数顺序的语法错误,ruby,hash,syntax,literals,Ruby,Hash,Syntax,Literals,使用此代码: Sponsorship.includes(patient: :vaccinations, :backer) 我得到语法错误,意外“'),应为=>。但当我改变论点的顺序时,就像这样: Sponsorship.includes(:backer, patient: :vaccinations) 错误消失了。为什么语法错误取决于参数的顺序?这不是有效的ruby语法。你可能是说: @subsornance=subsornance.包括(患者:[:疫苗接种,:支持者])。按slug查找(参
Sponsorship.includes(patient: :vaccinations, :backer)
我得到语法错误,意外“'),应为=>
。但当我改变论点的顺序时,就像这样:
Sponsorship.includes(:backer, patient: :vaccinations)
错误消失了。为什么语法错误取决于参数的顺序?这不是有效的ruby语法。你可能是说:
@subsornance=subsornance.包括(患者:[:疫苗接种,:支持者])。按slug查找(参数[:id])
请注意,
patient:
与:patient=>
相同,后者是散列的关键保护项。所以ruby期望下一个值是散列的一半,而不是一个列表。我将其更改为数组(不确定这是否是您的意思) 这不是有效的ruby语法。你可能是说:
@subsornance=subsornance.包括(患者:[:疫苗接种,:支持者])。按slug查找(参数[:id])
请注意,
patient:
与:patient=>
相同,后者是散列的关键保护项。所以ruby期望下一个值是散列的一半,而不是一个列表。我将其更改为数组(不确定这是否是您的意思) 这不是有效的ruby语法。你可能是说:
@subsornance=subsornance.包括(患者:[:疫苗接种,:支持者])。按slug查找(参数[:id])
请注意,
patient:
与:patient=>
相同,后者是散列的关键保护项。所以ruby期望下一个值是散列的一半,而不是一个列表。我将其更改为数组(不确定这是否是您的意思) 这不是有效的ruby语法。你可能是说:
@subsornance=subsornance.包括(患者:[:疫苗接种,:支持者])。按slug查找(参数[:id])
请注意,
patient:
与:patient=>
相同,后者是散列的关键保护项。所以ruby期望下一个值是散列的一半,而不是一个列表。我将其更改为数组(不确定这是否是您的意思) 因为如果您依赖Ruby语法糖来避免自己编写{}
,则哈希参数必须是最后一个参数。因为如果您依赖Ruby语法糖来避免编写{},则哈希参数必须是最后一个参数
你自己。因为如果你依靠Ruby语法糖来避免自己写{}
的话,哈希参数必须是最后一个参数。因为如果你依靠Ruby语法糖来避免写{},哈希参数必须是最后一个参数
你自己。includes方法希望找到散列作为最后一个参数。您必须按此方式传递散列。否则,必须在哈希周围放置{}
。方法希望找到哈希作为最后一个参数。您必须按此方式传递散列。否则,必须在哈希周围放置{}
。方法希望找到哈希作为最后一个参数。您必须按此方式传递散列。否则,必须在哈希周围放置{}
。方法希望找到哈希作为最后一个参数。您必须按此方式传递散列。否则,您必须在哈希周围放置{}
。这里有两个有效的选择:
@sponsorship = Sponsorship.includes(:backer, patient: [:vaccinations]).find_by_slug(params[:id])
@sponsorship = Sponsorship.includes({ patient: :vaccinations }, :backer)
.find_by_slug(params[:id])
@sponsorship = Sponsorship.includes(:backer, patient: :vaccinations)
.find_by_slug(params[:id])
第一次有两个参数,第一个是散列,第二个是值
在第二个示例中,仍然有两个参数,第一个是值,第二个是隐式散列。在ruby中,当散列是传递给方法的最后一个参数时,可以省略括号
你在这里做了什么:
@sponsorship = Sponsorship.includes(patient: :vaccinations, :backer)
.find_by_slug(params[:id])
被解释为:
@sponsorship = Sponsorship.includes({ patient: :vaccinations, :backer })
.find_by_slug(params[:id])
这显然是错误的,因为哈希需要
{key0:value0,keyN:valueN}
语法。这里有两个有效的替代方法:
@sponsorship = Sponsorship.includes({ patient: :vaccinations }, :backer)
.find_by_slug(params[:id])
@sponsorship = Sponsorship.includes(:backer, patient: :vaccinations)
.find_by_slug(params[:id])
第一次有两个参数,第一个是散列,第二个是值
在第二个示例中,仍然有两个参数,第一个是值,第二个是隐式散列。在ruby中,当散列是传递给方法的最后一个参数时,可以省略括号
你在这里做了什么:
@sponsorship = Sponsorship.includes(patient: :vaccinations, :backer)
.find_by_slug(params[:id])
被解释为:
@sponsorship = Sponsorship.includes({ patient: :vaccinations, :backer })
.find_by_slug(params[:id])
这显然是错误的,因为哈希需要
{key0:value0,keyN:valueN}
语法。这里有两个有效的替代方法:
@sponsorship = Sponsorship.includes({ patient: :vaccinations }, :backer)
.find_by_slug(params[:id])
@sponsorship = Sponsorship.includes(:backer, patient: :vaccinations)
.find_by_slug(params[:id])
第一次有两个参数,第一个是散列,第二个是值
在第二个示例中,仍然有两个参数,第一个是值,第二个是隐式散列。在ruby中,当散列是传递给方法的最后一个参数时,可以省略括号
你在这里做了什么:
@sponsorship = Sponsorship.includes(patient: :vaccinations, :backer)
.find_by_slug(params[:id])
被解释为:
@sponsorship = Sponsorship.includes({ patient: :vaccinations, :backer })
.find_by_slug(params[:id])
这显然是错误的,因为哈希需要
{key0:value0,keyN:valueN}
语法。这里有两个有效的替代方法:
@sponsorship = Sponsorship.includes({ patient: :vaccinations }, :backer)
.find_by_slug(params[:id])
@sponsorship = Sponsorship.includes(:backer, patient: :vaccinations)
.find_by_slug(params[:id])
第一次有两个参数,第一个是散列,第二个是值
在第二个示例中,仍然有两个参数,第一个是值,第二个是隐式散列。在ruby中,当散列是传递给方法的最后一个参数时,可以省略括号
你在这里做了什么:
@sponsorship = Sponsorship.includes(patient: :vaccinations, :backer)
.find_by_slug(params[:id])
被解释为:
@sponsorship = Sponsorship.includes({ patient: :vaccinations, :backer })
.find_by_slug(params[:id])
这显然是错误的,因为哈希需要
{key0:value0,keyN:valueN}
语法。你的问题是什么?他有语法错误并想知道原因。你的问题是什么?他有语法错误并想知道原因。你的问题是什么?他有语法错误并想知道原因。你的问题是什么?他有语法错误并想知道原因。这和我的意思不完全一样。在你的建议中,你暗示赞助有一个病人,病人有许多疫苗接种,病人有一个支持者,但事实并非如此。实际上,赞助只有一个病人,病人有很多疫苗接种,赞助只有一个支持者。这和我的意思不完全一样。在您的建议中,您暗示赞助有一名患者,患者有许多疫苗接种,以及