我们有:
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
在索引操作中是否总是在逻辑之后,并等到索引操作中的逻辑结束?
答案 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过滤器中改变渲染行为。