您的位置:首页 > 其它

render collection渲染集合

2016-07-14 14:38 274 查看
渲染集合时使用局部视图特别方便。通过 
:collection
 选项把集合传给局部视图时,会把集合中每个元素套入局部视图渲染:

传入复数形式的集合时,在局部视图中可以使用和局部视图同名的变量引用集合中的成员。在上面的代码中,局部视图是 
_product
,在其中可以使用 
product
 引用渲染的实例。

渲染集合还有个简写形式。假设 
@products
 是 
product
 实例集合,在 
index.html.erb
 中可以直接写成下面的形式,得到的结果是一样的:

Rails 根据集合中各元素的模型名决定使用哪个局部视图。其实,集合中的元素可以来自不同的模型,Rails 会选择正确的局部视图进行渲染。

在上面几段代码中,Rails 会根据集合中各成员所属的模型选择正确的局部视图。

如果集合为空,
render
 方法会返回 
nil
,所以最好提供替代文本。


3.4.6 本地变量


要在局部视图中自定义本地变量的名字,调用局部视图时可通过 
:as
 选项指定:

这样修改之后,在局部视图中可以使用本地变量 
item
 访问 
@products
 集合中的实例。

使用 
locals:
{}
 选项可以把任意本地变量传入局部视图:

在局部视图中可以使用本地变量 
title
,其值为 
"Products
Page"


在局部视图中还可使用计数器变量,变量名是在集合后加上 
_counter
。例如,渲染 
@products
 时,在局部视图中可以使用 
product_counter
 表示局部视图渲染了多少次。不过不能和 
as:
:value
 一起使用。

在使用主局部视图渲染两个实例中间还可使用 
:spacer_template
 选项指定第二个局部视图。


3.4.7 间隔模板


Rails 会在两次渲染 
_product
 局部视图之间渲染 
_product_ruler
 局部视图(不传入任何数据)。

3.4.8 集合局部视图的布局


渲染集合时也可使用 
:layout
 选项。

使用局部视图渲染集合中的各元素时会套用指定的模板。和局部视图一样,当前渲染的对象以及 
object_counter
 变量也可在布局中使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: