我有理由将content_tag
方法从帮助程序传递到模块中:
module MyHelper
def helper_method1(a, b)
MyModule.module_method1(a, b, &content_tag)
end
end
def MyModule
def self.module_method1(a, b, &content_tag)
#......
my_tag = content_tag.call(:span, nil, class: "some_class123")
end
end
我收到的错误是wrong number of arguments (0 for 1+)
。我做错了什么?
答案 0 :(得分:0)
你以错误的方式制作它,在你的代码中你尝试在方法中使用co pass block(不存在)
在这种情况下,你要么必须将它传递给你的助手方法,要么传递视图上下文并将content_at
委托给这个上下文。
module MyHelper
def helper_method1(a, b, &block)
MyModule.module_method1(a, b, &block)
end
end
def MyModule
include ActionView::Helpers::TagHelper
def self.module_method1(a, b, &block)
#......
my_tag = content_tag(:span, &block, class: "some_class123")
end
end
module MyHelper
def helper_method1(a, b)
MyModule.module_method1(a, b, self)
end
end
def MyModule
def self.module_method1(a, b, view_context)
my_tag = view_context.content_tag(:span, nil, class: "some_class123")
end
end
考虑到include ActionView::Helpers::TagHelper
在第一个例子中至关重要
您可以查看Using link_to in a class in a Rails helper它也可能有用