假设我在一个基本控制器中有一些逻辑,将信息传递给视图,以构建类似面包屑的东西:

class ContextAwareController < ApplicationController

  after_filter :build_breadcrumb

  def build_breadcumb
    #...
  end
end

我希望这个build_breadcrumb方法运行主控制器逻辑,但before视图被渲染.

上面的代码运行得太晚,但使用before_过滤器则为时过早.

有人能提出一种方法来实现这一点,而不用在子控制器中的每个操作结束时显式调用build_breadcumb吗?

谢谢

推荐答案

我相信渲染是在调用render时开始的,没有默认的延迟方式.你可以做一件事:

过滤器的应用顺序与声明的顺序相同.因此,在使用存储在类变量中的数组args调用render时,请创建第二个after过滤器.然后,在通常调用render的任何地方,设置变量.

Ruby-on-rails相关问答推荐

在ransackable_scopes中的作用域上创建activeadmin过滤器

Rails Heroku部署:预编译assets资源 失败.SassC::语法错误

使用Rails和RSpec,有没有办法查看操作真正将您带到哪个页面?

Ruby/Rails 相当于 Python 的 sys.addAuditHook

计算总价(商品数量*商品价格)

在bash中匹配带有空格字符的字符串

如何从设计中删除/禁用注册

使用带有 bootstrap-sass gem 的 Rails 4 无法让 CSS 在 Heroku 上工作

如何在 Rails 迁移中添加判断约束?

什么是Ruby 用于 BESIDES 轨道?

如果缺少翻译,则回退到默认语言

如何拯救 OmniAuth::Strategies::OAuth2::CallbackError?

设计记住我和会话

Ruby - 合并两个数组并删除重复的值

Sidekiq 在 docker-compose 上的 127.0.0.1:6379 (Errno::ECONNREFUSED) 上连接到 Redis 时出错

如何一次显示一条 Ruby on Rails 表单验证错误消息?

Rails:一次添加多个 flash[:notice] 的简单方法

rails 获取应用程序根/基本 url

长期运行项目中的 Rebase Rails 迁移

ArgumentError:ApplicationController 的副本已从模块树中删除,但仍处于活动状态