Ruby on rails 在RubyonRails中,渲染';共享/评分';,:本地人=>;{:score=>;@foo.score}不会通过本地考试吗?

Ruby on rails 在RubyonRails中,渲染';共享/评分';,:本地人=>;{:score=>;@foo.score}不会通过本地考试吗?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,也许我错过了什么 似乎要渲染局部,我们可以使用 render 'shared/score' 但下一节将讨论当地人 render :partial => 'bar', :locals => { :score => @foo.score } 但是第一种形式呢 render 'shared/score', :locals => { :score => @foo.score } 上面的这条线不会通过当地人,为什么 看来这是必须的 render :partial =&g

也许我错过了什么

似乎要渲染局部,我们可以使用

render 'shared/score'
但下一节将讨论当地人

render :partial => 'bar', :locals => { :score => @foo.score }
但是第一种形式呢

render 'shared/score', :locals => { :score => @foo.score }
上面的这条线不会通过当地人,为什么

看来这是必须的

render :partial => 'shared/score', :locals => { :score => @foo.score }
但为什么呢?(我使用的是Rails 3.0.6)

您实际上想要:

render 'shared/score', { :score => @foo.score }
解释 您可以在
render
上查看它们的源代码

如果您看到,如果第一个参数不是散列,它将默认为分部的名称,并将第二个参数作为局部变量传递

问题是,它希望第二个参数中的本地人
:locals=>{:score=>@foo.score}
一开始可能看起来不错,但实际上你想要的是
{:score=>@foo.score}

原因是它将
\u render\u partial
方法的
:locals
选项设置为第二个参数。因此,如果你按照自己的方式来做,它实际上看起来像:

:locals => {:locals => {:score=>@foo.score}}

这没有多大意义。

code>呈现“共享/score”时,{:score=>@foo.score}有效吗?