2016-07-16 5 views
0

次のような構造のヘルパーを作成しています。ヘルパーを持つクラスでのコンカットの使用

module SomeHelper 

def some_task(&block) 
    SomeMethods.new(self, block).some_task 
end 

class SomeMethods< Struct.new(:view, :callback) 
    delegate :content_tag, to: :view 
    include ActionView::Helpers::TextHelper 

    def some_task 
    content_tag :div do 
     concat content :div, class: 'a' do 
     Header 
     end 
     concat view.capture(&callback) 
    end 
    end 
end 
end 

最終出力はdiv.aとビューのヘルパーブロックに含まれるhtmlの両方を含むdivでなければなりません。私は次のエラーが発生しています。

undefined local variable or method `output_buffer' for #<SomeHelper::SomeSomeMethods... 

これはどのように修正できますか?

答えて

0

はそれをこの方法を試してみてください:

def some_task 
    capture do 
    content_tag :div do # probably a typo unless you implemented a `content` method 
     concat content_tag :div, class: 'a' do 
     Header 
     end 
     concat view.capture(&callback) 
    end 
    end 
end 
+0

を表示するconcatメソッドを委任する必要がある、と# '' '。あなたが指摘したタイプミスを編集しました。 – Obromios

+0

あなたは 'delegate:content_tag、to::view'しようとしています。あなたがそれを行うための非常に正当な理由がなく、それがもたらす効果を提供しない限り、これは物事を混乱させるでしょう。ヘルパーで使用しているRailsの 'content_tag'メソッドの呼び出しは、代わりに' view'にリダイレクトされています。その結果が何であるか分かりません。それを削除して、問題が解決しないかどうか確認してください。また、なぜあなたは明示的に 'ActionView :: Helpers :: TextHelper'をインクルードする必要があると感じますか? –

0

あなたは、私がいることをしようとしたオブジェクト

関連する問題