nop*_*ole 5 ruby-on-rails ruby-on-rails-3
也许我错过了http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials中的内容
似乎要渲染部分,我们可以使用
render 'shared/score'
Run Code Online (Sandbox Code Playgroud)
但下一节将讨论当地人
render :partial => 'bar', :locals => { :score => @foo.score }
Run Code Online (Sandbox Code Playgroud)
但是第一种形式呢?
render 'shared/score', :locals => { :score => @foo.score }
Run Code Online (Sandbox Code Playgroud)
上面的一行不会传入当地人,为什么?
看起来似乎必须如此
render :partial => 'shared/score', :locals => { :score => @foo.score }
Run Code Online (Sandbox Code Playgroud)
但为什么呢?(我使用的是Rails 3.0.6)
你真的想要:
render 'shared/score', { :score => @foo.score }
Run Code Online (Sandbox Code Playgroud)
你可以看看它的源代码render
.
http://api.rubyonrails.org/classes/ActionView/Rendering.html#method-i-render
如果您看到第一个参数不是哈希值,则默认为部分名称,并将第二个参数作为本地传递.
问题在于它需要第二个参数的本地人.:locals => {:score => @foo.score}
起初可能看起来很正确,但你真的想要:{:score=> @foo.score}
.
这样做的原因是它将方法的:locals
选项设置为_render_partial
第二个参数.所以如果你按照自己的方式去做,它实际上看起来像:
:locals => {:locals => {:score=>@foo.score}}
Run Code Online (Sandbox Code Playgroud)
哪个没有多大意义.
归档时间: |
|
查看次数: |
961 次 |
最近记录: |