«  Tables and Classes...   |   Blog首页   |   fxri (Ruby 更人性化的一面... »

2006/03/07

Action view-- Partial (Ruby on Rails)

学习Ruby on Rails的时间不长,

做项目的时候被怎么在template中添加现有的header 和footer困扰着。

因为不太熟悉Action View。
今天,将Agile Web Development with Rails 这本书Action View仔细地研读了一遍,发现了Partial Page Templates(on page:368)中找到了答案。
Partial可以解决我上面的问题,可是他并不是出于这样的本意而存才的。partial可以是一个页面任何位置的一部分。
在书中这样说到,
Rails中的Partial就像一种子程序,它可以被其他的template多次调用,潜在地作为参数通过传递对象呈现给浏览器.当partial template结束呈现,然后返回给controller ,在来调用自己的 template.

一个partial template 看起来和其他的template一样.有些许的差别,partial template 的文件名必须是以一个下划线开头.看到这回我明白了,为什么在创建一个scaffold,一般都会有一个叫_form.rhtml的文件。

<%= start_form_tag :action => 'update', :id => @photo %>
<%= render :partial => 'form' %>
<%= submit_tag 'Edit' %>
<%= end_form_tag %>

一定见过这段代码(一般就是一个scaffold中的edit.rhtml),这里就有用到

"render :partial"(或render(:partial=>"partilaname",在这里就不要在用下划线了)).

这样其他的template就可以用render(:partial=>)方法来调用了。

说上说的大概就是这个意思。

但是觉得在template中调用partial是对某个controller下的所有action有效的。如果是静态内容的partial当然是每什么问题。但是,当partial的内容是动态的,就像这样给partial传递个对象render(:partial=>"",:object =>""),那么这个对象在哪来?有的action 可能有这样一个同名的对象,使用该对象不会有问题。有的action并没有这个对象,而在template中调用的partial中使用到了这样的一个对象,就会出错。
这种情况时,我认为将内容写在action view中更有意义。使用到该partial的action中我们又这样一个对象。就不会有
问题。

另外,这样,我们将一个所有页面都要用到的对象,写在application 是切实可行的。

Jouy 发表于 2006-03-07 20:26  阅读(1626) 评论( 0) 引用( 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=85959

相关内容
更多..

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

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