我有以下文件层次结构:
库 > MyModule.rb 库 > MyModule.rb > MyClass.rb
在 MyModule.rb 中,我有一个初始化方法:
def initialize(variable, parameter)
@variable = variable
@parameter = parameter
end
但是,当我尝试创建我的类的实例时,结果是一个错误:
undefined method: set is not defined for nil
我试图用这个重建的初始化版本来修复它:
def initialize(variable, parameter)
@variable = variable
@parameter = parameter
end
这减轻了我收到的错误。但是,现在我要在 HTML.erb 文件中创建我的类的实例:
<%= MyModule::MyClass.new("string", 1) %>
在这里我得到一个参数错误:2 for 0
谁能解释一下?
根据要求提供更多信息:
我正在尝试创建一些方法来创建 html 标记作为常用元素的便捷包装器。特别是,它们利用 rails 的 content_tag 辅助方法来创建新方法。该计划最终是通过使用简单的 << 运算符来添加嵌套标记支持。
库/标签.rb
module Tags
include ActionView::Helpers::TagHelper
include ActionView::Helpers::JavaScriptHelper
include ActionView::Context
def initialize(type, content, options, &block)
@type = type
@content = content
@options = block_given? ? nil : options
@block = block_given? ? block : nil
end
def show
if @block.nil?
content_tag(@type, @content, @options)
else
content_tag(@type, @content, @options) { @block.call }
end
end
end
现在这是模块的最低级别;这些对于我将要实现的所有标签都是通用的。然后我在标签文件夹(Lib/tags/div.rb)中有一个类:
module Tags
class DivTag
def initialize(content, options, &block)
super(:div, content, options, &block)
end
end
end
然后在我的测试文件 main.rb (这是去本地主机时路由到的)
这就是我得到错误的地方。