« 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
所有人可见
相关内容
- 渐渐习惯了看英文资料--整理了一些Agile web development中Active Record
- Tables and Classes 表和类的关系 (Active Record)
- 对MemCached的正确认识
回复列表每两分钟自动刷新一次,想立即刷新吗?点击这里







