2016-07-16 2 views
0

다음과 같은 구조의 도우미를 작성하고 있습니다.도우미가있는 클래스에서 concat 사용

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 방법을 위임 할 필요가 나는 것을 시도, 그리고'''정의되지 않은 메서드'output_buffer = '# 얻을 '''. 내가 지적한 오타를 편집했습니다. – Obromios

+0

당신은'delegate : content_tag, to : : view'를 시도하고 있습니다. 당신이 그렇게 할 좋은 이유가 없다면, 그리고 그것이하는 효과를 제공하면, 이것은 일을 망칠 것입니다. 도우미에서 사용중인 Rails의'content_tag' 메소드에 대한 호출이'view'로 리디렉션되고 대신 그 결과가 무엇인지 모르겠습니다. 그것을 제거하고 문제가 지속되는지보십시오. 또한, 왜 당신이 명시 적으로'ActionView :: Helpers :: TextHelper'를 포함 할 필요가 있다고 생각합니까? –

0

당신이 객체에게