Ошибка выброса хелперского блока 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 удаляет ошибку, но в итоге моя оболочка не отображается

С помощью:

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 исправили это для меня

Другие вопросы по тегам