代码之家  ›  专栏  ›  技术社区  ›  widgetycrank

如何在传递块时呈现非局部布局?

  •  5
  • widgetycrank  · 技术社区  · 14 年前

    当我在传递块时呈现布局时,例如:

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

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

    谢谢!

    1 回复  |  直到 14 年前
        1
  •  1
  •   clemensp    14 年前

    如果传递要渲染的块,则将其渲染为部分块,如下面的代码片段所示:

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

    Rails 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