我正在尝试创建一个模块来抽象一些用于选择控制器中动作布局的逻辑。
下面是一个示例控制器的样子:
class StudentsController < ApplicationController
second_tierable only: [:new, :create]
layout "students"
...
我在 ApplicationController 中包含了一个模块,它定义了以下类方法:
def second_tierable(options = {})
self.send(:before_filter, options.slice(:only, :except)) do
self.class.layout "second_tier_page"
end
end
这是我期望发生的事情:
- 如果操作是新的或创建的,则布局为“second_tier_page”。
- 布局是“学生”,否则
这正是发生的情况,除了在运行 new 或 create 操作之后。例如,如果我访问“students/new”,然后访问“students/index”,那么“second_tier_page”布局将呈现为索引。
我正在开发模式下运行我的应用程序。有趣的是,如果我对我的应用程序中的任何文件进行更改并保存,当我刷新“索引”时,正确的布局就会呈现。这让我相信某些东西被缓存在某个地方,但我对根本问题不知所措。
有任何想法吗?