2010-06-04 84 views
8

我的問題是:我想在我的lib文件夾中創建一個類TitlePanel,該類使用content_tag方法,但我無法弄清楚如何加載它。我試過所有需要'xxx'的,我可以想到它一直給我錯誤消息,它無法找到所需的文件。如何在lib/class中使用content_tag

基本上,我想要做的是創建一個幫助生成html,但我必須通過一個類來存儲一些價值第一。例如,我正在嘗試執行以下操作:

title = TitlePanel.new("this is my title") 
title.add_panel "help" do 
    content_tag :div, "this is the help section..." 
end 
title.add_panel "search" do 
    content_tag :div, "this is the search section..." 
end 

title.to_s 

輸出是使所有這些工作都需要的HTML。

回答

7

給這個鏡頭。如果你在你的lib目錄中的文件頂部包含TagHelper,它應該可以工作。這裏有一個例子:

class MyLib 
    include ActionView::Helpers::TagHelper 

    def foo(x) 
    content_tag :div, x 
    end 
end 


>> MyLib.new.foo "bar" 
=> "<div>bar</div>" 
+0

情況有所改善。它現在抱怨缺少方法捕獲。 這是我的全碼 類TitlePanel 包括::的ActionView助手:: TagHelper DEF初始化(T,d = 「默認」) @title =噸 @description = d @labels = [] @面板= Hash.new 端 DEF add_panel(標籤,&塊) @labels <<標籤 @panel [標號] =收率 端 端 – Alain 2010-06-04 16:43:07

+0

改進格式化但除去.to_s方法 - 擲骰子,格式化不起作用徵求意見? – Alain 2010-06-04 16:45:31

+0

我不確定代碼示例中發生了什麼。但是,如果你只是想在你的lib目錄的模塊中使用content_tag方法,那麼你應該能夠將這一點添加到你的文件的頂部:包括ActionView :: Helpers :: TagHelper – 2010-06-04 23:42:13

5

這是一個老問題,但是我首先發現了這個問題,並且和OP一樣麻煩。我發現最好的解決方案是使用這個:

ActionController::Base.helpers.content_tag(:div, class: 'my_div')