次のファイル階層があります。
Lib> MyModule.rb Lib> MyModule.rb> MyClass.rb
MyModule.rbには、初期化メソッドがあります。
def initialize(variable, parameter)
@variable = variable
@parameter = parameter
end
ただし、クラスのインスタンスを作成しようとすると、エラーが発生します。
undefined method: set is not defined for nil
この再構築されたバージョンのinitializeで修正しようとしました。
def initialize(variable, parameter)
@variable = variable
@parameter = parameter
end
これにより、私が受け取ったエラーが軽減されます。ただし、ここで、HTML.erbファイルにクラスのインスタンスを作成します。
<%= MyModule::MyClass.new("string", 1) %>
ここで引数エラーが発生します:0の場合は2
誰かがこれを説明できますか?
要求に応じた詳細情報:
一般的に使用される要素の便利なラッパーとしてhtmlタグを作成するいくつかのメソッドを作成しようとしています。特に、これらはrailsのcontent_tagヘルパーメソッドを利用して新しいメソッドを作成します。最終的には、単純な<<演算子を使用してネストされたタグのサポートを追加する予定です。
Lib / tags.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
これがモジュールの最低レベルです。これらは、実装するすべてのタグに共通になります。次に、Tagsフォルダー(Lib / tags / div.rb)にクラスがあります。
module Tags
class DivTag
def initialize(content, options, &block)
super(:div, content, options, &block)
end
end
end
次に、私のテストファイルmain.rb(ローカルホストに移動するときにルーティングされるもの)で
そして、これは私が私のエラーを得るところです。