我试图从两个不同的函数调用相同的函数,而这两个函数又调用另一个函数。以下是问题描述以及一些代码片段-Function-1(从Form-1获得输入)
def create_set_for_class1
@application.is_xhr_general?
class_prod = request.GET['class_prod']
class_corp = request.GET['class_corp']
run_user = request.GET['run_user']
begin
set_generation class_prod, class_corp, run_user
rescue => error
return render plain: "Something wrong happened"
end
redirect_to :action => 'view'
end
我有一个类似的函数,但参数不同,这次函数-2(从Form-2输入)-
def create_set_for_class2
@application.is_xhr_general?
acc_id = request.GET['acc_id ']
begin
set_generation acc_id
rescue => error
return render plain:"Something wrong happened"
end
redirect_to :action => 'view'
end
现在,由上述两个函数调用的函数(函数3)是-
def set_generation class_prod, class_corp, run_user, application: @application
all_class_prod = Rails.configuration.input1[:prod] + class_prod.split(",").map(&:strip)
all_class_corp = Rails.configuration.input1[:corp] + class_corp.split(",").map(&:strip)
foo4 material_set_name_prod, all_class_prod, run_user, application
foo4 material_set_name_corp, all_class_corp, run_user, application
end
- foo4*是正在调用的另一个函数。
正如我们所看到的,函数3(SET_GENERATION)通过获取函数1(CREATE_SET_FOR_CLAS1)和input1的参数来执行操作。现在,我们希望将函数2的参数(CREATE_SET_FOR_A2)包含到函数3中,并通过获取函数2的参数来执行相同的操作,其输入为input2。
如何做到这一点?任何帮助都将不胜感激。**我面临的问题-**在从新创建的函数2调用函数3时,它要求我包含函数1的参数。我们不希望重叠。
1条答案
按热度按时间erhoui1w1#
虽然我不知道这应该做什么,或者为什么,但我们可以简化现有的逻辑和代码,如下所示:(希望这能让您有所收获)
以下是几点注意事项:
1.我不知道
@application
是什么,但它似乎没有作用(除非它会引发在其他地方处理的错误)。1.默认
application: @application
没有任何意义,因为@application
似乎始终在范围内。1.
run_user
在create_set_for_class2
中没有定义,因此nil
将传递给foo4
1.调用
foo4
两次表示该代码可能也有问题1.这种逻辑更好地包含在某种对象中,但是有太多的未知因素,我无法提供一个明确的例子。
1.从术语的Angular 来看,Ruby并不重要,但值得注意:Ruby没有函数,只有方法。