Ruby on rails Rails:如何从控制器';动作前/动作后方法内联?

Ruby on rails Rails:如何从控制器';动作前/动作后方法内联?,ruby-on-rails,Ruby On Rails,我在应用程序控制器上设置了我的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 我是否可以

我在应用程序控制器上设置了我的
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={})
作为定义?


编辑:我发现

这是旧的语法,我们现在有后遗症。尽管如此,我相信有一种内联的方法可以做到这一点,不是吗

# 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]

:(很抱歉,我希望有一种内联方式来实现它,只是对问题进行了编辑:忘了提及它,我的坏!但仍然没有弄清楚是否可以将哈希作为args发送,而不仅仅是字符串名,这将需要我使用该字符串选择正确的引用。)
after_action Proc.new{ set_pagination_header(:paged_orders) }, only: [:index]