我有几个块助手,这是我正在做的一个简单示例:
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
的调用会删除错误,但最终会导致我的包装器无法呈现
使用:
答案 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为我修复了