我在应用程序控制器上有我的set_pagination_header
,我需要从其他控制器中调用它:
# syntax error in line below
after_action :set_pagination_header, :my_argument_object, only: [:index]
def index
@my_argument_object = Resource.page(1)
render json: @my_argument_object
end
我可以直接发送原始@my_argument_object
,所以我不想这样做:
def set_pagination_header(name, options = {})
scope = instance_variable_get("@#{name}")
# some_logic_here
end
1)什么是正确的语法(需要一个内联语法)?
2)为什么不 set_pagination_header(object, options = {})
是定义?
edit :我在这里找到了
之类的东西after_filter only: [:index] { set_pagination_header(:germs) }
这是旧的语法,我们现在得到了after_action。尽管如此,我相信有一个 inline 做到这一点的方法,不是吗?
# I tried and that didn't work
after_action :set_pagination_header(:my_argument_object), only: [:index]
after_action { :set_pagination_header(:my_argument_object) } only: [:index]
after_action { :set_pagination_header, :my_argument_object } only: [:index]
您只需要将方法调用添加到您的回调
after_action :set_pagination_header_callback, only: :index
def set_pagination_header_callback
set_pagination_header(...your variables here...)
end
# application_controller.rb
def set_pagination_header(name, options = {})
scope = instance_variable_get("@#{name}")
# some_logic_here
end
在线方式,但不是那么干净!
after_action Proc.new{ set_pagination_header(:paged_orders) }, only: [:index]