2016-07-16 39 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,它包含div.a和包含在視圖中的helper塊內的html。我收到以下錯誤;

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

我試過了,並得到'''未定義的方法'output_buffer =」爲#'''。我編輯了你指出的錯字。 – Obromios

+0

你正試圖'委託:content_tag,::view'。除非你有一個很好的理由來做這件事,並且提供它的效果,否則這會讓事情變得糟糕。調用Rails在助手中使用的content_tag方法正在被重定向到'view',我不確定它的結果可能是什麼。嘗試刪除,看看問題是否依然存在。另外,爲什麼你覺得你需要顯式地包含「ActionView :: Helpers :: TextHelper」? –

0

則需要委託concat方法來查看對象