在before_filter中设置布局时出现奇怪的行为

时间:2012-07-25 06:26:17

标签: ruby-on-rails rendering

我正在尝试创建一个模块来抽象一些逻辑,用于为控制器中的操作选择布局。

这是一个示例控制器的样子:

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

这就是我期望发生的事情:

  • 布局为&#34; second_tier_page&#34;如果操作是新的或创建。
  • 布局是&#34;学生&#34;否则

这正是发生的事情,除了运行new或create动作之外。如果我访问&#34;学生/新的&#34;,例如,然后访问&#34;学生/索引,&#34;那么&#34; second_tier_page&#34;为索引呈现布局。

我正在开发模式下运行我的应用。有趣的是,如果我对我的应用程序中的任何文件进行更改并保存,那么当我刷新&#34; index&#34;正确的布局呈现。这让我相信某些东西正在缓存,但我对根本问题感到茫然。

有什么想法吗?

0 个答案:

没有答案