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

wid*_*ank 5 ruby-on-rails

当我在传递布局时渲染布局,例如:

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

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

谢谢!

cle*_*nsp 1

如果您传递一个块进行渲染,它将被渲染为部分,如下面的代码片段所示:

if block_given?
      _render_partial(options.merge(:partial => options[:layout]), &block)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)