我有一个帮手:
module MyHelper
def test
binding.pry # break point
MyModule.test2(&content_tag)
end
end
在断点处,我想在传递给MyModule之前检查content_tag。尽管如此,无论我做了什么都会导致错误:
content_tag
ArgumentError: wrong number of arguments (0 for 1+)
(content_tag).respond_to? :call
ArgumentError: wrong number of arguments (0 for 1+)
content_tag.class
ArgumentError: wrong number of arguments (0 for 1+)
content_tag.is_a? Proc
ArgumentError: wrong number of arguments (0 for 1+)
content_tag.lambda?
ArgumentError: wrong number of arguments (0 for 1+)
我的目标是将其传递给MyModule。但我不能这样做,错误与上面的错误相同。那是为什么?
答案 0 :(得分:3)
错误非常明显。在没有参数的情况下调用content_tag
,而此方法至少需要一个参数。
如果您想将其转换为阻止并转入test2
方法,可以使用Object#method
:
MyModule.test2(&method(:content_tag))