Rails Partial 的魔力手册

这里将看到raisl partial 的神奇魔力。

rails 的 ActionView为我们提供了很到位的服务。让我们才view层游刃有余,首先必须得遵守 Rails的一个命名约定(Naming Convention).为了区别partial和其他 view的区别,_x.rhtml是partia的特有称呼。


partial("partial views")是什么?

通常,应用会要解决一类似这样的问题:在页面嵌入一些经常变化的,更模块化子页面。这些子页面可以被嵌入到很多地方。像页面的header和footer 那样。在apache中是通过一些include指令来实现这样的功能,Rails中,我们不需要依赖于 web server,Rails的 render(:partial)或者( render_partial) 就提供了类似的实现。

partial就是一些,以_xxx.rhtml(或_x.rxml)的模板文件,也就是一些rhtml(rxml)片段。

partial("partial views")的用法

partial使我们的view层的逻辑变的更简单。最典型的用处就是广告栏,这是个经常更换内容的小片段,可能你希望在每个页面的某个地方都出现这个广告栏。写在页面中的麻烦你是知道的。

render :partial 的第一个参数是指定_x.rhtml的path/文件名,要注意,这个文件名,我们只需要写成 "x",就可以了。因为,当我们render :partial =>"x"是,rails会去寻找一个叫_x.rhtml的文件。

render_partial "x", obj

render :partial  接受的第二个参数是一个对象(object),这个对象将才partial view 中可直接使用。

同时,你可以自定义参数传递 。

归纳起来有三种方式:

 1.实例变量

 2.对象(object)

 3.指定局部变量

每种的用法,在这里给段简短的示例代码:

1.实例变量

 

@web2_0 = "uuzone.com"

render_partial "x"

 

在当前view可用的实例变量,在partial中也是可用的 。 如上面的例子,:

@web2_0 = "uuzone.com" 这个实例变量在 partial _x.rhtml 中是可用的.

2.对象(object)

这个object是个有点迷惑人:

这句代码 ,是view中来一个render_partial 给它的默认object赋值 ,

通过给object赋值或传递了对象, 很有点意思,就可以通过该 partial 的名字,来访问对象的内容。

x

其实在这里 raisl为我们设置了一个变量名为partial名字。这样,就可以使用模板名字来引用对象的方法和属性了。

3.局部变量

@myuu = ["mao","cai","jimmy","tom"]

for uu in @myuu-->

render(:partial=>"x",'uu'=>uu

这个是简单地给 partial传递一个 局部变量 .

partial中就可以直接使用, uu 这个局部变量 .

这里只是简单地给 uu这个局部变量一些简单的字符传, 你可以传递给他任何你希望的对象 .而且参数的个数也是不限制的 .

另外, render(:partial) 还接受一个特殊用法的参数 , :collection.

通常,你可能会想到用一个循环,解决与上面的例子同样的情况,当然我上面的例子是为了说明局部变量参数 . 可是 ,并不需要这么干, rails 考虑到这是个极普遍的做法, render_partial_collection方法让你并不需要像上面的例子那样 .

@myuu = ["mao","cai","jimmy","tom"]

render_partial_collection "x",@myuu

 

结果, 是一样的. 可是很有意思的是,render_partial_collection 还可以接受一个参数 partial_spacer_template , 发现上面的例子得到的结果,可能是是连接在一起的, partial_spacer_template ,就是将他们分开.

通过给 partial_spacer_template 指定一个值,这个值就也是一个partial,它的内容应该是一些片段或者你想要的任何东西.

所以, 将

render_partial

render_partial_collection

这两个方法用好, 你的view的逻辑 就会变的更简单 ,更清晰 .

你可能感兴趣的:(Rails Partial 的魔力手册)