我有这段代码:
<form action="<?echo base_url();?>register/form_success" method="post" class="form-horizontal" id="career_submitform">
<div class="control-group">
<span class="caption-title">Please complete the registration form for getting the admission application number</span>
</div>
<input type="hidden" value="<? echo $applicant_id?>" name="applicant_id">
<input type="hidden" value="<? echo $grade_name?>" name="grade_name">
<input type="hidden" value="<? echo $grade_id?>" name="grade_id">
<div class="form-actions clearfix">
<div class="btncontinue-wrap">
<input type="button" onclick="myFunction()" value="Continue" name="submit" class="btn-d btn-continue blue button-next" id="button_submit_style">
</div>
</div>
</form>
<script>
function myFunction() {
$('#career_submitform').delay(4000).submit();
}
</script>
当我尝试使用它时,我收到此错误:
class B
def self.definer(name, *args, &block)
define_method(name) { self.instance_exec(*args, &block) }
end
end
我理解B.definer(:tst) { super }
# => :tst
B.new.tst
# => TypeError: self has wrong type to call super in this context: B (expected #<Class:#<Object:0x007fd3008123f8>>)
具有特殊含义,与调用方法没什么不同。有人可以解释为什么以及发生了什么?如果有人为此提出解决方案,也会很棒。
答案 0 :(得分:0)
我没有收到与您相同的错误消息,但无论如何都会收到错误消息。必须在方法定义中使用super
。但是你没有在方法定义中使用它。这引起了一个错误。
关于解决方案,我不能给你一个,因为你不清楚你想要做什么。
答案 1 :(得分:0)
你绝对不想要instance_exec。
如果你没有涉及* args,我说你只是想要这个:
def self.definer(name, &block)
define_method(name, &block)
end
但是,然后您的新definer
方法会执行define_method
首先执行的完全相同的操作,因此没有理由创建它,而不是仅仅使用{{ 1}}首先。
你到底想要做什么?解释你想做什么,也许有人可以帮助你。
但我认为您现有实施中的define_method
并不是您想要的 - 它会在instance_exec
调用时立即执行阻止,在调用definer
时 - 我您是否希望在调用您定义的方法时执行该块?但我不确定,这取决于你想要做什么,这是不清楚的。 define_method
super
在instance_exec
内没有任何意义 - 超级你觉得你用什么方法打电话?