2010-11-23 69 views
5

当我呈现布局,同时通过它的块,例如:如何在传递块时呈现非局部布局?

render(:layout => 'layouts/application') {...}

它需要的布局是一个局部(_application.html.erb)。如果没有名称中的前导下划线,是否可以呈现常规的非局部布局?

谢谢!

回答

1

如果传递一个块来呈现,它呈现为一个部分如下面的代码段看出:

if block_given? 
     _render_partial(options.merge(:partial => options[:layout]), &block) 

在导轨3的完全渲染方法目前看起来如下:

def render(options = {}, locals = {}, &block) 
    case options 
    when Hash 
    if block_given? 
     _render_partial(options.merge(:partial => options[:layout]), &block) 
    elsif options.key?(:partial) 
     _render_partial(options) 
    else 
     template = _determine_template(options) 
     lookup_context.freeze_formats(template.formats, true) 
     _render_template(template, options[:layout], options) 
    end 
    when :update 
    update_page(&block) 
    else 
    _render_partial(:partial => options, :locals => locals) 
    end 
end 
+3

换句话说,号码 – mindeavor 2012-03-30 19:22:16