如何实现“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
答案 0 :(得分:1)
如果要动态更改布局,请使用render ..., :layout => has_resource? ? "cpu/context" : "cpu/account"
,layout
是一种类方法,用于指定方法集的布局。
答案 1 :(得分:0)
找不到has_resource,因为has_resource被定义为实例方法,select_layout方法被定义为类方法。