render collection渲染集合
来源:互联网 发布:淘宝会员打折怎么设置 编辑:程序博客网 时间:2024/06/14 03:04
渲染集合时使用局部视图特别方便。通过 :collection
选项把集合传给局部视图时,会把集合中每个元素套入局部视图渲染:
<
h1
>Products</
h1
>
<%=
render partial:
"product"
, collection:
@products
%>
<
p
>Product Name:
<%=
product.name
%>
</
p
>
传入复数形式的集合时,在局部视图中可以使用和局部视图同名的变量引用集合中的成员。在上面的代码中,局部视图是 _product
,在其中可以使用 product
引用渲染的实例。
渲染集合还有个简写形式。假设 @products
是 product
实例集合,在 index.html.erb
中可以直接写成下面的形式,得到的结果是一样的:
<
h1
>Products</
h1
>
<%=
render
@products
%>
Rails 根据集合中各元素的模型名决定使用哪个局部视图。其实,集合中的元素可以来自不同的模型,Rails 会选择正确的局部视图进行渲染。
<
h1
>Contacts</
h1
>
<%=
render [customer1, employee1, customer2, employee2]
%>
<
p
>Customer:
<%=
customer.name
%>
</
p
>
<
p
>Employee:
<%=
employee.name
%>
</
p
>
在上面几段代码中,Rails 会根据集合中各成员所属的模型选择正确的局部视图。
如果集合为空,render
方法会返回 nil
,所以最好提供替代文本。
<
h1
>Products</
h1
>
<%=
render(
@products
) ||
"There are no products available."
%>
3.4.6 本地变量
要在局部视图中自定义本地变量的名字,调用局部视图时可通过 :as
选项指定:
<%=
render partial:
"product"
, collection:
@products
, as:
:item
%>
这样修改之后,在局部视图中可以使用本地变量 item
访问 @products
集合中的实例。
使用 locals: {}
选项可以把任意本地变量传入局部视图:
<%=
render partial:
"product"
, collection:
@products
,
as:
:item
, locals: {title:
"Products Page"
}
%>
在局部视图中可以使用本地变量 title
,其值为 "Products Page"
。
在局部视图中还可使用计数器变量,变量名是在集合后加上 _counter
。例如,渲染 @products
时,在局部视图中可以使用 product_counter
表示局部视图渲染了多少次。不过不能和 as: :value
一起使用。
在使用主局部视图渲染两个实例中间还可使用 :spacer_template
选项指定第二个局部视图。
3.4.7 间隔模板
<%=
render partial:
@products
, spacer_template:
"product_ruler"
%>
Rails 会在两次渲染 _product
局部视图之间渲染 _product_ruler
局部视图(不传入任何数据)。
3.4.8 集合局部视图的布局
渲染集合时也可使用 :layout
选项。
<%=
render partial:
"product"
, collection:
@products
, layout:
"special_layout"
%>
使用局部视图渲染集合中的各元素时会套用指定的模板。和局部视图一样,当前渲染的对象以及 object_counter
变量也可在布局中使用。
- render collection渲染集合
- fur render(毛发渲染)
- EXT render 渲染过程
- EXT render 渲染过程
- 渲染树render tree
- render直接渲染小技巧
- render避免双重渲染错误
- [UGUI]Render Modes渲染模式
- unity渲染队列render quaue
- vuejs的render渲染函数
- 集合Collection
- 集合collection
- Collection集合
- Collection集合
- Collection集合
- 集合 Collection
- Collection集合
- Collection集合
- 前端的注意事项
- Android IPC机制(二)——利用Messenger实现跨进程通信
- 常用协议报头
- opencv3.1中svm的使用范例
- faster-rcnn CUDA配置
- render collection渲染集合
- Web负载均衡的几种实现方式
- JDBC连接数据库详解(Oracle)
- Leetcode——remove-element
- hiho 1032 && HDU 3068 manacher算法
- [Excel]如何对Excel二维表中的所有数值进行排序
- java修饰符大全详解
- PowerDesigner12 逆向工程介绍
- linux下python安装Mysql扩展