«  分页算法   |   Blog首页   |   这段 时间很忙 »

2006/04/06

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的逻辑 就会变的更简单 ,更清晰 .

Jouy 发表于 2006-04-06 11:06  阅读(2237) 评论( 1) 引用( 0) Ruby on Rails
所有人可见

  • 收藏文章:
  • save at del.icio.us
  • save at digg
  • save at my yahoo
  • save at blinklist
  • save at furl
  • save at simpy
  • save at blogmarks
  • submit at reddit
  • save at spurl
  • save at shadows
  • save at rawsugar
  • save at bloglines

引用

http://www.uuzone.com/app/trackBack.do?type=blog&trackBackID=93550

相关内容
更多..

回复列表每两分钟自动刷新一次,想立即刷新吗?点击这里

您的浏览器可能不支持Frame, 优友地带需要使用Frame才能显示正常页面!