周围过滤器的自定义渲染

时间:2016-03-25 14:55:56

标签: ruby-on-rails ruby

我们有:

class CategoriesController < ApplicationController
  around_filter :custom_render
  def index
    # a lot of logic here with long external requests
  end

  def custom_render
    # some complicated logic like render(file: '/templates/category_type/action_name.html.haml')
  end
end

custom_render在索引操作中是否总是在逻辑之后,并等到索引操作中的逻辑结束?

1 个答案:

答案 0 :(得分:2)

不,它不会始终在index方法之后运行。

它将在之前运行,在 之后运行,因为您使用的是around_filter。这取决于您如何实施custom_render方法(也就是您放置yield的位置):

def custom_render
  # some code that will run before the action

  yield # here your index action runs

  # some code that will run after the action
end

形成文档:

  

&#34;围绕&#34;过滤器负责通过屈服来运行相关的操作,类似于Rack中间件的工作方式。

那就是说:当方法返回到周围过滤器时,响应已经被渲染,因此你不能在after或around过滤器中改变渲染行为。