Ошибка выброса помощника Erubis Block с помощью concat - PullRequest
6 голосов
/ 05 декабря 2009

У меня есть пара помощников блоков, вот простой пример того, что я делаю:

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 ]

2 голосов
/ 05 декабря 2009

На самом деле с помощью плагина rails_xss , который был моей конечной целью, есть исправление для этого.

Мне просто нужно было поменять помощника, чтобы сделать это concat( content.html_safe! )

1 голос
/ 16 июня 2011

начиная с Erubis 2.7.0 вы можете использовать опцию: bufvar следующим образом:

Erubis::Helpers::RailsHelper.init_properties = {:bufvar => '@output_buffer'}
1 голос
/ 27 марта 2010

Erubis и Rails 2.3 плохо работают вместе. Проверьте это сообщение: http://daveelkins.com/2009/06/18/making-erubis-264-and-rails-23-work-together/ Он создал драгоценный камень на github, который заставляет их работать вместе.

0 голосов
/ 22 июня 2011

Добавление

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

в config / initializers / erubis.rb исправили это для меня

...