首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:初始化从库clash加载的模块中的方法

Rails:初始化从库clash加载的模块中的方法
EN

Stack Overflow用户
提问于 2012-04-09 10:06:13
回答 1查看 1.3K关注 0票数 0

我有以下文件层次结构:

Lib > MyModule.rb Lib > MyModule.rb > MyClass.rb

在MyModule.rb中,我有一个初始化方法:

代码语言:javascript
复制
def initialize(variable, parameter)
  @variable = variable
  @parameter = parameter
end

但是,当我尝试创建类的实例时,结果是一个错误:

代码语言:javascript
复制
undefined method: set is not defined for nil

我试着用initialize的这个重构版本来修复它:

代码语言:javascript
复制
def initialize(variable, parameter)
  @variable = variable
  @parameter = parameter
end

这减轻了我收到的错误。但是,现在我要在HTML.erb文件中创建我的类的一个实例:

代码语言:javascript
复制
<%= MyModule::MyClass.new("string", 1) %>

这里我得到了一个参数错误:2对应于0

有人能解释这个吗?

根据要求提供更多信息:

我正在尝试创建一些方法来创建html标记,作为常用元素的方便包装器。特别是,它们利用rails的content_tag辅助方法来创建新方法。我们的计划是最终通过使用简单的<<操作符来添加嵌套标签支持。

Lib/tags.rb

代码语言:javascript
复制
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

现在这是模块的最低层;这些将是我将要实现的所有标记的公共级别。然后我在Tags文件夹(Lib/tags/div.rb)中有一个类:

代码语言:javascript
复制
module Tags
  class DivTag
    def initialize(content, options, &block)
      super(:div, content, options, &block)
    end
  end
end

然后在我的测试文件main.rb中(这是在转到本地主机时路由到的)

这就是我的错误所在。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-09 11:21:47

"def Tags“--这是错误的方法,你应该使用class标签...

要在方法类中调用“Tags::Base#initialize”-类应该继承自其他类,例如类DivTag < Tags::Base def initialize super() # <- Tags::Base#initialize end end

默认情况下,从"Object“类继承的每个新类和Object#initialize都接受0个参数。

为什么不使用"content_tag“helper (http://apidock.com/rails/ActionView/Helpers/TagHelper/content_tag)?这几乎就是你想要的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10068193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档