Erubis阻止助手投掷错误与concat

时间:2009-12-04 23:40:56

标签: ruby-on-rails view-helpers erubis

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

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的调用会删除错误,但最终会导致我的包装器无法呈现

使用:

  • Rails 2.3.5
  • Erubis 2.6.5
  • 尝试this gem帮助Erubis(虽然2.6.4)和Rails 2.3一起玩得更好

4 个答案:

答案 0 :(得分:2)

实际上使用rails_xss plugin,这是我的最终目标,其中包含一个修复程序。

我只需要改变我的助手即可concat( content.html_safe! )

答案 1 :(得分:1)

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

答案 2 :(得分:1)

因为Erubis 2.7.0你可以用这种方式利用:bufvar选项:

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

答案 3 :(得分:0)

添加

Erubis :: Helpers :: RailsHelper.init_properties = {:bufvar =&gt; '@output_buffer'}

配置/初始化程序/ erubis.rb为我修复了