def partial(template, *args)
options = args.extract_options!
options.merge!(:layout => false)
if collection = options.delete(:collection) then
collection.inject([]) do |buffer, member|
buffer << erb(template, options.merge(:layout =>
false, :locals => {template.to_sym => member}))
end.join("\n")
else
erb(template, options)
end
end
此方法没有文档。这似乎是让你添加额外功能到erb模板中的部分渲染的一些方法。ruby框架方法 - >这里发生了什么?
此Ruby代码如何工作?
我不关心这个在web框架中扮演的角色。我只是想了解Ruby语法中发生了什么。
哇。多么好的解释。谢谢。实际上它不适用于Rails。有人将此作为Sinatra的扩展,因为Sinatra对partials有最小的特征。我只是无法弄清楚它添加了什么。但你的解释是有道理的。我认为主要功能是能够多次渲染一个集合 - 比如可以是一系列评论或订单。只是一个问题。你说“options.merge!(:layout => false)就像做选项[:layout] = false一样。”这是否意味着它总是设置:布局为'假'?有点像设置默认值重新设置? – 2009-09-01 05:20:53
是的,它总是将选项[:layout]设置为false,因为您不想使用布局包裹部分。 – Chuck 2009-09-01 05:30:54
明白了。再次感谢。 – 2009-09-01 05:40:55