Monday, January 07, 2008

render partial的几个参数说明附例子

由render方法内部代码:
render_partial_collection(partial, collection, options[:spacer_template], options[:locals], options[:status])
引出的render partial的几种用法:
1. 当在render :partial时参数里有传:collection一个对象集合时(如下所示的@users),会自动在当前的view视图里循环此:partial
2. 当在render :partial时参数里有传:local时,在:local这个Hash中的key(var1,var2)可以在partial里作为局部变量调用,如下所示:


Controller:
def partial_methods
@users = User.find(:all)
end
View(partial_methods.rhtml):
<%= render :partial => 'user', :collection => @users, :locals => {:var1 => 'test_local_var1_in_partial(_user)', :var2 => 'test_local_var2_in_partial(_user)'}, :spacer_template => 'spacer_partial' %>
View(_user.rhtml)
<%= user.name %>
<br />
<%= var1 %>
<br />
<%= var2 %>
<br />
View(_spacer_partial.rhtml)
<p>
space line
<%= debug @users %>
</p>

在partial _user.rhtml中可以调用:locals中的var1和var2
3. 当在render :partial时参数里有传:spacer_template时,此参数对应的partial模板会被作为遍历collection进行render :partial的渲染时插入.
4. 在view中render :partial时其中的:status传什么值并不会影响view的渲染.
5. 在:spacer_template的partial中可以使用controller中传过来的变量,但不能取到赋于render :partial的:local变量,如var1,var2

No comments :