Ошибка выброса хелперского блока Erubis с помощью concat
У меня есть пара помощников блоков, вот простой пример того, что я делаю:
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
- Erubis 2.6.5
- И попробовал этот драгоценный камень, который помогает Erubis (хотя 2.6.4) и Rails 2.3 играть лучше вместе
4 ответа
На самом деле использование плагина rails_xss, который был моей конечной целью, содержит исправление для этого.
Я просто должен был поменять помощника, чтобы сделать это concat( content.html_safe! )
Начиная с Erubis 2.7.0 вы можете использовать опцию:bufvar следующим образом:
Erubis::Helpers::RailsHelper.init_properties = {:bufvar => '@output_buffer'}
Erubis и Rails 2.3 плохо работают вместе. Проверьте это сообщение: http://daveelkins.com/2009/06/18/making-erubis-264-and-rails-23-work-together/ Он создал драгоценный камень на GitHub, который заставляет их работать вместе.
Добавление
Erubis::Helpers::RailsHelper.init_properties = {:bufvar => '@output_buffer'}
чтобы config/initializers/erubis.rb исправили это для меня