Ruby on rails 如何在库/类中使用content_标记

Ruby on rails 如何在库/类中使用content_标记,ruby-on-rails,Ruby On Rails,我的问题是:我想在我的lib文件夹中创建一个类标题面板,该类使用content_标记方法,但我不知道如何加载它。我已经尝试了我能想到的所有需要“xxx”的文件,但它不断给我错误消息,说明它找不到所需的文件 基本上,我要做的是创建一个生成html的助手,但我必须先传递一个类来存储一些值。我正在尝试做的事情: title = TitlePanel.new("this is my title") title.add_panel "help" do content_tag :div, "this i

我的问题是:我想在我的lib文件夹中创建一个类标题面板,该类使用content_标记方法,但我不知道如何加载它。我已经尝试了我能想到的所有需要“xxx”的文件,但它不断给我错误消息,说明它找不到所需的文件

基本上,我要做的是创建一个生成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

试试看。如果在lib目录的文件顶部包含TagHelper,那么它应该可以工作。下面是一个例子:

class MyLib
  include ActionView::Helpers::TagHelper

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


>> MyLib.new.foo "bar"
=> "<div>bar</div>"
类MyLib
包括ActionView::Helpers::TagHelper
def foo(x)
内容标签:div,x
结束
结束
>>MyLib.new.foo“bar”
=>“巴”

这是一个老问题,但我首先发现了这个问题,并且遇到了与OP相同的问题。我找到的最佳解决方案是使用这个:

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

情况有所改善。它现在正在抱怨缺少方法捕获。这是我的完整代码类TitlePanel include ActionView::Helpers::TagHelper def initialize(t,d=“default”)@title=t@description=d@labels=[]@panel=Hash.new end def add_panel(label,&block)@labels改进了格式,但删除了.to_s方法-crap,格式化不适用于注释?我不确定您的代码示例中发生了什么。但是,如果您只想在lib目录中的模块内使用content_标记方法,那么您应该能够将此位添加到文件的顶部:include ActionView::Helpers::TagHelperI。但我仍然得到了#的“未定义的方法`捕获'异常”。难道不要求TagHelper获取它的所有依赖项吗?当我生成传递给add_pannel的块时,该块是否可能无法访问定义content_标记的范围?但即使这是答案,它也不能解释为什么我会得到未定义的方法“capture for…”异常。