select_layout实现Ruby元编程

| 如何实现“ select_layout”方法,以便我可以转换此代码:
class Cpu::ContextsController < Cpu::ApplicationController

  layout :select_layout

  private

  def has_resource?
    true # dummy
  end

  def select_layout
    has_resource? ? \'cpu/context\' : \'cpu/account\'
  end
end
进入
class Cpu::ContextsController < Cpu::ApplicationController
  select_layout do
    has_resource? ? \'cpu/context\' : \'cpu/account\'
  end
end
更新:下面的解决方案就足够了;)
  before_filter do
    self.class.send(:layout, has_resource? ? \'cpu/context\' : \'cpu/account\')
  end
    
已邀请:
        如果要即时更改布局,请使用
render ..., :layout => has_resource? ? \"cpu/context\" : \"cpu/account\"
layout
是一个类方法,用于指定方法集的布局。     
        它找不到has_resource,因为has_resource被定义为实例方法,而select_layout方法被定义为类方法。     

要回复问题请先登录注册