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