ruby-on-rails 如何将一个方法中的示例变量的值传递给同一控制器中的另一个方法?

h22fl7wq  于 2022-11-19  发布在  Ruby
关注(0)|答案(2)|浏览(131)

我的控制器中的一种方法如下:

def new_equipment_matches_wanted
 #..........Big chucnk of code of about 7 to 8 lines and then..
 @receiver
end

现在我定义了另一个方法,我想在其中访问这个@receiver示例变量的值,它将有一个单独的模板。

def send_receivers_to_admin
 #supposedly I am trying send @receiver values here
end

我该怎么做呢?或者我应该在第二个方法中写同样的代码来访问那个变量中的值吗?

xytpbqjk

xytpbqjk1#

示例变量(带@)在所有控制器的方法之间共享。

def new_equipment_matches_wanted
 #..........Big chucnk of code of about 7 to 8 lines and then..
 @receiver
end 
def send_receivers_to_admin
 @receiver.do_something
end

您可以阅读更多关于变量here的信息
然而,正如塞尔吉奥所说,
“无法在请求之间传递示例变量...控制器操作支持不同的请求”
则必须在两个方法上都加载@receiver,可以使用before_action

class CustomController < ActionController::Base
  before_action :load_receiver, only [:send_receivers_to_admin,:new_equipment_matches_wanted]

def new_equipment_matches_wanted
  @receiver.do_something
end 

def send_receivers_to_admin
 @receiver.do_something
end 

private

def load_receiver
    # Big chucnk of code of about 7 to 8 lines and then..
    @receiver
end
hivapdat

hivapdat2#

我创建了一个类变量,并从任何需要的类访问该变量。
在声明任何方法之前,类变量在类(或控制器)中被写为@@variable_name

相关问题