渲染布局存储在数据库中

| 与另一个站点进行一些集成工作时,我有一个非常特殊的要求,那就是需要在运行时创建布局。 此刻,我不得不诉诸以下内容:
def new
  body = render_to_string \'new\', :layout => false      
  page = add_layout(body, db.load_template)
  render :text => page
end
这有点尴尬,我宁愿做这样的事情:
def new
  ...
  render \'new\', :layout => db.load_template
end
有没有更清洁的方法可以做到这一点?也许可以在运行时注册新的布局并使用常规语法?     
已邀请:
        哈!我遇到了一个可以解决这个问题的项目。退房全景。它将Rails视图存储在数据库而不是文件系统中。     
        您可以使用模块和alias_method_chain扩展ActionController :: Base(或ApplicationController)来完成这项工作。
module Foo

  alias_method_chain :render, :dblayout

  def render_with_dblayout options = nil, extra_options = {}, &block
   if options.include? :dblayout
     ...
   else
     render_without_dblayout options, extra_options { yield }
   end
  end
end

ActionController::Base.send(:include, Foo)
    

要回复问题请先登录注册