6

我有几个块助手,这是我正在做的一个简单示例:

def wrap_foo foo, &block
    data = capture(&block)

    content = "
      <div class=\"foo\" id=\"#{foo}\">
        #{data}
      </div>"
    concat( content )
end

我只是在尝试 erubis,它给了我以下错误:

You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.<<

删除对concat删除错误的调用,但最终我的包装器没有被呈现

使用:

  • 导轨 2.3.5
  • 埃鲁比斯 2.6.5
  • 并尝试了这个可以帮助 Erubis(虽然是 2.6.4)和 Rails 2.3 一起玩得更好的gem
4

4 回答 4

2

实际上使用rails_xss 插件,这是我的最终目标,其中包含对此的修复。

我只需要改变我的助手来做到这一点concat( content.html_safe! )

于 2009-12-05T12:56:40.907 回答
2

从 Erubis 2.7.0 开始,您可以通过以下方式利用 :bufvar 选项:

Erubis::Helpers::RailsHelper.init_properties = {:bufvar => '@output_buffer'}
于 2011-06-16T16:49:17.247 回答
1

Erubis 和 Rails 2.3 不能很好地协同工作。查看这篇文章:http ://daveelkins.com/2009/06/18/making-erubis-264-and-rails-23-work-together/他在 github 上创建了一个 gem,可以让他们一起工作。

于 2010-03-27T19:16:55.853 回答
0

添加

Erubis::Helpers::RailsHelper.init_properties = {:bufvar => '@output_buffer'}

到 config/initializers/erubis.rb 为我修复了它

于 2011-06-22T14:26:26.977 回答