Chr*_*ris 40 ruby ruby-on-rails ruby-on-rails-3
假设我在基本控制器中有一些逻辑将信息传递给视图以构建类似于痕迹的东西:
class ContextAwareController < ApplicationController
after_filter :build_breadcrumb
def build_breadcumb
#...
end
end
Run Code Online (Sandbox Code Playgroud)
我想此build_breadcrumb方法运行后的主控制器的逻辑,但前视图被呈现.
上面的代码运行得太晚了,但是before_filter太早了.
任何人都可以提出一种方法来实现这一点,而无需在子控制器中的每个操作结束时显式调用build_breadcumb吗?
谢谢
Jos*_*eim 53
我遇到了同样的问题并解决了这个问题:
class ApplicationController < ActionController::Base
def render *args
add_breadcrumbs
super
end
end
Run Code Online (Sandbox Code Playgroud)
我相信渲染是在调用渲染时开始的,并且没有默认的方法来推迟它。这是你可以做的一件事:
过滤器的应用顺序与声明的顺序相同。因此,创建第二个后置过滤器,使用存储在类变量中的数组 args 调用 render。然后在您通常调用渲染的任何地方设置变量。
| 归档时间: |
|
| 查看次数: |
20830 次 |
| 最近记录: |